簡體   English   中英

如何在Spark 2.2.0中加載XML文件?

[英]How can I load XML files in Spark 2.2.0?

當我在spark-2.2.0中加載xml文件時,如下所示:

var ac = spark.read.format("xml").option("rowTag", "App").load("/home/sid/Downloads/Files/*.xml")

它顯示了一個錯誤:

java.lang.ClassNotFoundException:無法找到數據源:xml。 請在org.apache上的org.apache.spark.sql.execution.datasources.DataSource $ .lookupDataSource(DataSource.scala:549)上的http://spark.apache.org/third-party-projects.html上找到軟件包。 org.apache.spark.sql.execution.datasources.DataSource.providingClass(DataSource.scala:86)處的spark.sql.execution.datasources.DataSource.providingClass $ lzycompute(DataSource.scala:86) org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:178)處的sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:301)在org.apache.spark.sql.DataFrameReader.load(DataFrameReader。 scala:156)... 48被淘汰

引起原因:java.lang.ClassNotFoundException:位於scala.reflect.internal.util.AbstractFileClassLoader.findClass(AbstractFileClassLoader.scala:62)的xml.DefaultSource位於java.lang的java.lang.ClassLoader.loadClass(ClassLoader.java:424) org.apache.spark.sql.execution.datasources.DataSource $ .anLoader.loadClass(ClassLoader.java:357)at org.apache.spark獲得$ ononfun $ apply $ 12.apply(DataSource.scala:533) sql.execution.datasources.DataSource $$ anonfun $ 21 $$ anonfun $ apply $ 12.apply(DataSource.scala:533)位於org.apache.spark的scala.util.Try $ .apply(Try.scala:192)。 sql.execution.datasources.DataSource $$ anonfun $ 21.apply(DataSource.scala:533)位於org.apache.spark.sql.execution.datasources.DataSource $$ anonfun $ 21.apply(DataSource.scala:533)位於scala。 util.Try.orElse(Try.scala:84)在org.apache.spark.sql.execution.datasources.DataSource $ .lookupDataSource(DataSource.scala:533)... 53更多

在這里,您必須使用databricks包來加載XML文件。 您可以使用以下帶有spark-submit或spark-shell的命令加載databricks軟件包。

$SPARK_HOME/bin/spark-shell --packages com.databricks:spark-xml_2.10:0.4.1

那么您可以按照此方式加載。

val df = spark.read
  .format("com.databricks.spark.xml")
  .option("rowTag", "app")
  .load("/home/sid/Downloads/Files/*.xml")

有關更多信息,請訪問此鏈接。 https://github.com/databricks/spark-xml

@sahil desai-當我們已經添加了xml的依賴關系時,為什么我們應該創建spark上下文,因為spark-shell已經提供了spark會話作為spark。 這會更好嗎?

 val df = spark.read.format("xml")
         .option("rowTag", "app")
         .load("/home/sid/Downloads/Files/*.xml")

暫無
暫無

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

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