Hallo Ich habe einen Datenrahmen, die ich brauche in JavaRDD zu konvertieren und zurück zu Datenrahmen Ich habe den folgenden CodeSpark-Datenrahmen von JavaRDD erstellt <Row> kopiert alle Spalten Daten in die erste Spalte
DataFrame sourceFrame = hiveContext.read().format("orc").load("/path/to/orc/file");
//I do order by in above sourceFrame and then I convert it into JavaRDD
JavaRDD<Row> modifiedRDD = sourceFrame.toJavaRDD().map(new Function<Row,Row>({
public Row call(Row row) throws Exception {
if(row != null) {
//updated row by creating new Row
return RowFactory.create(updateRow);
}
return null;
});
//now I convert above JavaRDD<Row> into DataFrame using the following
DataFrame modifiedFrame = sqlContext.createDataFrame(modifiedRDD,schema);
sourceFrame
und modifiedFrame
Schema ist dasselbe wenn ich sourceFrame.show()
Ausgabe anrufe, sehe ich, dass jede Spalte entsprechende Werte hat und keine Spalte leer ist, aber wenn ich modifiedFrame.show()
rufe, sehe ich, dass alle Spaltenwerte in erste Spaltenwert für zB zusammengeführt werden nehmen Quelle Datenrahmen hat 3-Säule, wie unten
_col1 _col2 _col3
ABC 10 DEF
GHI 20 JKL
Wenn I modifiedFrame drucken, die ich von JavaRDD konvertiert es in der folgenden Reihenfolge zeigt
_col1 _col2 _col3
ABC,10,DEF
GHI,20,JKL
Wie vor allem die _col1 gezeigt alle Werte und _col2 hat und _col3 ist leer. Ich weiß nicht, was ich falsch mache, bitte, ich bin neu bei Spark danke im Voraus.
Wie lautet Ihre updateRow-Variable genau? –
Ich aktualisiere Zeile durch Konvertieren von Zeilenobjekt in Java-Sammlung Liste von Objekten und dann Aktualisieren eines Feldes Wert und dann diese Liste als Teil von RowFactory.create – u449355