我们拥有的
stream.foreachRDD(rdd->{
JavaRDD<String> javaRDD=rdd.map(elem -> elem.value());
Dataset ds = //Any transformations
sc.read().schema(csvSchema).csv(ds).write();
});
什么不好的主意:
1)不好,因为使用了.collect()
sc.sqlContext().createDataset(javaRDD.collect(), Encoders.STRING())
2)错误,因为“ StringType无法转换为StructType”
sc.sqlContext().createDataFrame(javaRDD,String.class)
3)没有架构:
不好,因为灵活性低,代码可读性(30个以上字段,庞大的构造函数),列的顺序不变-按字母顺序排列的字段(写到用于impala的拼花)
JavaRDD<String> javaRDD=rdd.map(elem -> new Model(elem.value()));
sc.sqlContext().createDataFrame(javaRDD,Model.class);