1
我必须在火花数据框中的每个分区的文件中执行记录计数,然后我必须将输出写入xml文件。将火花数据帧中每个分区的记录写入一个xml文件
这是我的数据框。
dfMainOutputFinalWithoutNull.coalesce(1).write.partitionBy("DataPartition","StatementTypeCode")
.format("csv")
.option("nullValue", "")
.option("header", "true")
.option("codec", "gzip")
.save("s3://trfsdisu/SPARK/FinancialLineItem/output")
现在我不得不阴户无记录在每个分区中的每个文件,然后写输出到一个XML文件
我这是怎么试图做
val count =dfMainOutputFinalWithoutNull.groupBy("DataPartition","StatementTypeCode").count
count.write.format("com.databricks.spark.xml")
.option("rootTag", "items")
.option("rowTag", "item")
.save("s3://trfsdisu/SPARK/FinancialLineItem/Descr")
我我能够打印每个分区的记录总数和打印,但当我试图创建XML文件,我越来越低于错误。
java.lang.ClassNotFoundException: Failed to find data source: com.databricks.spark.xml. Please find packages at http://spark.apache.org/third-party-projects.html
我使用Spark 2.2.0, Zeppelin 0.7.2
所以我一定要导入com.databricks.spark.xml
这一点,但为什么因为CSV文件的情况下,如果我没有进口com.databricks.spark.csv
。
问题2:我可以使用缓存dfMainOutputFinalWithoutNull
,因为我将使用两次来写它的数据,然后计算其分区记录,然后在XML文件中写?
而且我加入这个依赖
<!-- https://mvnrepository.com/artifact/com.databricks/spark-xml_2.10 -->
<dependency>
<groupId>com.databricks</groupId>
<artifactId>spark-xml_2.10</artifactId>
<version>0.2.0</version>
</dependency>
并重新解释,然后我得到了以下错误
java.lang.NullPointerException
at org.apache.zeppelin.spark.Utils.invokeMethod(Utils.java:38)
at org.apache.zeppelin.spark.Utils.invokeMethod(Utils.java:33)
at org.apache.zeppelin.spark.SparkInterpreter.createSparkContext_2(SparkInterpreter.java:391)
at org.apache.zeppelin.spark.SparkInterpreter.createSparkContext(SparkInterpreter.java:380)
at org.apache.zeppelin.spark.SparkInterpreter.getSparkContext(SparkInterpreter.java:146)