2

Also habe ich versucht, ein Projekt, an dem ich arbeite, um die Dataset-API zu reformatieren, und hatte einige Probleme mit Codierungsfehlern. Nach dem, was ich gelesen habe, denke ich, dass ich in der Lage sein sollte, Arrays von primitiven Werten in einem Datensatz zu speichern. Die folgende Klasse gibt mir jedoch Codierungsfehler:Datensätze von Arrays in Spark (1.6.1)

Könnte jemand bitte mir helfen zu verstehen, was das Problem hier ist? Können Datasets derzeit keine Arrays von Primitiven verarbeiten, oder muss ich etwas extra tun, damit sie funktionieren?

Danke

bearbeiten 1:

Hier ist der vollständige Fehler ich in Funken 2,0

Error:(223, 84) Unable to find encoder for type stored in a Dataset. Primitive types (Int, String, etc) and Product types (case classes) are supported by importing spark.implicits._ Support for serializing other types will be added in future releases. 
    val similarities = invertedIndexDataset.groupByKey(x => x.partition).mapGroups { 
+0

Sie vielleicht einen Blick auf [diese SO Beitrag] haben wollen (http://stackoverflow.com/questions/36449368/using-an-optionsome-primitive-type-in-spark-dataset-api) . Was ist der spezifische Fehler, den Sie bekommen? –

+0

Haben Sie: import sqlContext.implicits._ –

+0

@RobertHorvick Ja, aber ich importiere es in der Funktion also würde das ein Problem verursachen? (Diese Funktion nimmt den sparkContext als Parameter an, so dass es schwer wäre, einen klassenweiten sqlContext zu haben) –

Antwort

0

Die folgenden Arbeiten wie erwartet immer bin.

import spark.implicits._ 

spark.createDataset(Array(1,2) :: Array(1) :: Array(2) :: Nil) 
res0:org.apache.spark.sql.Dataset[Array[Int]] = [value: array<int>]