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)