繁体   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