Encoder für Zeile Typ Spark-Datasets

Möchte ich schreiben, ist ein encoder für einen Zeile geben Sie im DataSet, für eine map-operation, die ich mache. Im wesentlichen, ich verstehe nicht, wie man schreiben Encoder.

Unten ist ein Beispiel für eine map-operation:

In the example below, instead of returning Dataset<String>, I would like to return Dataset<Row>

Dataset<String> output = dataset1.flatMap(new FlatMapFunction<Row, String>() {
            @Override
            public Iterator<String> call(Row row) throws Exception {

                ArrayList<String> obj = //some map operation
                return obj.iterator();
            }
        },Encoders.STRING());

Ich verstehen, dass statt eines string-Encoder muss wie folgt geschrieben werden:

    Encoder<Row> encoder = new Encoder<Row>() {
        @Override
        public StructType schema() {
            return join.schema();
            //return null;
        }

        @Override
        public ClassTag<Row> clsTag() {
            return null;
        }
    };

Allerdings verstehe ich nicht die clsTag() in the encoder, und ich bin auf der Suche nach einem ausgeführten Beispiel kann demostrate etwas ähnliches (d.h. ein encoder für einen row-Typ)

Bearbeiten - Dies ist nicht eine Kopie der Frage erwähnt : Encoder-Fehler beim anzeigen dataframe Zeile zu Zeile aktualisiert als Antwort, spricht über die Verwendung von Spark-1.x Spark 2.x (ich bin nicht dabei), auch ich bin auf der Suche nach einem encoder für eine Zeile der Klasse eher als das beheben eines Fehlers. Schließlich war ich auf der Suche nach einer Lösung in Java, nicht in der Scala.

InformationsquelleAutor tsar2512 | 2017-04-05
Schreibe einen Kommentar