簡體   English   中英

將Spark數據框中的每個分區記錄寫入xml文件

[英]Write records per partition in spark data frame to a xml file

我必須在spark數據幀中每個分區的文件中進行記錄計數,然后將輸出寫入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

另外,是否可以使用緩存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)

我會回答我的問題

所以我在zepplin中添加了以下依賴項

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM