用标头写入空的RDD以输出文件火花



我的条件只需使用标头即可生成输出文件。我使用以下依赖项

<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") 

希望这对您有所帮助。最好的问候

相关内容

  • 没有找到相关文章

最新更新