[英]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.