如何从apache spark框架中读取XML文件?

Ani*_*tha 9 xml apache-spark

我确实遇到了一个使用spark进行数据预处理的迷你教程:http: //ampcamp.berkeley.edu/big-data-mini-course/featurization.html

但是,这仅讨论了文本文件解析.有没有办法解析spark系统中的xml文件?

小智 5

似乎有人为apache-spark建立了xml数据源。

https://github.com/databricks/spark-xml

这支持通过指定标签和推断类型来读取XML文件,例如

import org.apache.spark.sql.SQLContext

val sqlContext = new SQLContext(sc)
val df = sqlContext.read
    .format("com.databricks.spark.xml")
    .option("rowTag", "book")
    .load("books.xml")
Run Code Online (Sandbox Code Playgroud)

您也可以将其与spark-shell以下项一起使用:

$ bin/spark-shell --packages com.databricks:spark-xml_2.11:0.3.0
Run Code Online (Sandbox Code Playgroud)


scr*_*des 3

我自己没有用过,但是方法和你用hadoop的方法是一样的。例如,您可以使用StreamXmlRecordReader并处理 xml。您需要记录读取器的原因是您希望控制处理的每个元素的记录边界,否则使用的默认值将处理行,因为它使用 LineRecordReader。让自己更熟悉 hadoop 中 recordReader 的概念将会很有帮助。

当然,您必须使用SparkContext的 hadoopRDD 或 hadoopFile 方法以及传递 InputFormatClass 的选项。如果 java 是您的首选语言,则存在类似的替代方案。