我的条件只需使用标头即可生成输出文件。我使用以下依赖项
<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>
火花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
update
我也使用了以下代码
tpDf.coalesce(1).write().format("com.databricks.spark.csv").option("header","true").save(FileName);
无输出零件文件
有人知道我如何实现吗?
在回答问题之前,我应该提到您要避免使用RDD
(Legacy API),而应使用DataSet/DataFrame
(Structred API)。有关三个API之间的差异以及为什么构造的API更好的更多信息,请删除此Databricks文章。
现在回答您的问题:
我来自Scala,但我确实相信在Java和Python中有一种非常相似的方法,因为您使用了结构化的API:
tpDF.write.option("header", true).save("test")
希望这对您有所帮助。最好的问候