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) 

回答

0

我會回答我的問題

所以我說下面依賴於齊柏林

Scala 2.11 

groupId: com.databricks 
artifactId: spark-xml_2.11 
version: 0.4.1 

在zepplin中加入以下內容

com.databricks:spark-xml_2.11:0.4.1 

然後我就可以創建文件了。