にデータフレームにJavaPairRDDを変換します。私はペアRDDを持っている私は、Java 7</p> <p>でスパーク1.6を使用していますスパークのJava API
まず、pairRDDをRowRDDに変換する必要があるようです。
PairRDDからRowRddを作成するにはどうすればいいですか?
にデータフレームにJavaPairRDDを変換します。私はペアRDDを持っている私は、Java 7</p> <p>でスパーク1.6を使用していますスパークのJava API
まず、pairRDDをRowRDDに変換する必要があるようです。
PairRDDからRowRddを作成するにはどうすればいいですか?
あなたは
public static final Function<Tuple2<String, String>,Row> mappingFunc = (tuple) -> {
return RowFactory.create(tuple._1(),tuple._2());
};
map関数を定義する必要があります今、あなたはJavaRDD<Row>
JavaRDD<Row> rowRDD = filesRDD.map(mappingFunc);
Java 8の場合は、単に
JavaRDD<Row> rowRDD = filesRDD.map(tuple -> RowFactory.create(tuple._1(),tuple._2()));
JavaPairRDDからのデータフレームを取得するための別の方法は
DataFrame df = sqlContext.createDataset(JavaPairRDD.toRDD(filesRDD), Encoders.tuple(Encoders.STRING(),Encoders.STRING())).toDF();
です
これを実現する方法の1つは、以下のとおりです。
1, john
2, steve
File2の:
//Read whole files
JavaPairRDD<String, String> pairRDD = sparkContext.wholeTextFiles(path);
//create a structType for creating the dataframe later. You might want to
//do this in a different way if your schema is big/complicated. For the sake of this
//example I took a simple one.
StructType structType = DataTypes
.createStructType(
new StructField[]{
DataTypes.createStructField("id", DataTypes.StringType, true)
, DataTypes.createStructField("name", DataTypes.StringType, true)});
//create an RDD<Row> from pairRDD
JavaRDD<Row> rowJavaRDD = pairRDD.values().flatMap(new FlatMapFunction<String, Row>() {
public Iterable<Row> call(String s) throws Exception {
List<Row> rows = new ArrayList<Row>();
for (String line : s.split("\n")) {
String[] values = line.split(",");
Row row = RowFactory.create(values[0], values[1]);
rows.add(row);
}
return rows;
}
});
//Create Dataframe.
sqlContext.createDataFrame(rowJavaRDD, structType);
サンプルデータは、私が
てFile1を使用
3, Mike
4, Mary
df.showから出力():Javaの7の場合
+---+------+
| id| name|
+---+------+
| 1| john|
| 2| steve|
| 3| Mike|
| 4| Mary|
+---+------+