我有条件需要生成只有标题的输出文件。我使用了以下依赖项
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.10</artifactId>
<version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_2.10</artifactId>
<version>1.6.0</version>
</dependency>
Spark Java代码
JavaSparkContext context = SparkBean.getInstance().getJavaSparkContext();
JavaRDD<Row> emptyRdd = context.emptyRDD();
SQLContext sqlContext = SparkBean.getInstance().getSparkSQLContext();
DataFrame tpDf = sqlContext.createDataFrame(emptyRdd,Common.createSchema(ConfigItems.getCitywiseSchema()));
tpDf.coalesce(1).toJavaRDD().saveAsTextFile("citywise.csv");
使用citywise.csv文件夹生成的输出,在里面我只能看到成功文件没有零件文件。
预期输出
citywise.csv / part-00000
cat citywise.csv/part-00000
header1,header2,header3
更新
我也使用下面的代码
tpDf.coalesce(1).write().format("com.databricks.spark.csv").option("header","true").save(FileName);
没有输出部分文件
有人知道如何实现这个吗?
答案 0 :(得分:1)
在回答问题之前我应该提到您要避免使用RDD
(遗留API),而应该使用DataSet/DataFrame
(Structred API)。有关三个api之间差异的更多信息以及为什么结构化api比RDD好得多,请重新考虑this databricks article。
现在回答你的问题:
我来自scala,但我确实认为,由于您使用的是结构化API,因此在java和python中这样做非常相似:
tpDF.write.option("header", true).save("test")
希望这会对你有所帮助。最诚挚的问候