9

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

但是,这仅讨论了文本文件解析。有没有办法从火花系统解析 xml 文件?

4

4 回答 4

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")

您还可以将其与spark-shell以下内容一起使用:

$ bin/spark-shell --packages com.databricks:spark-xml_2.11:0.3.0
于 2015-11-06T09:38:11.773 回答
3

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

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

于 2014-01-23T06:04:48.690 回答
0

看看这个链接

Databrics 提供 spark-xml 库,用于通过 spark 处理 xml 数据。

谢谢。

于 2016-11-17T11:14:48.593 回答
0

如果您正在寻找在 xml 中提取单个子记录,那么您可以使用 XmlInputFormat 来实现这一点,我在同一 http://baahu.in/spark-read-xml-files-using-上写了一篇博客xml输入格式/

于 2017-06-27T07:52:11.203 回答