【问题标题】:How to read XML files from apache spark framework?如何从 apache spark 框架中读取 XML 文件?
【发布时间】:2013-12-12 01:42:46
【问题描述】:

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

然而,这里只讨论文本文件解析。有没有办法从 spark 系统解析 xml 文件?

【问题讨论】:

    标签: xml apache-spark


    【解决方案1】:

    看起来有人为 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
    

    【讨论】:

    • 我刚刚编辑了这个答案。对不起我的不好,请原谅(实际上这是我的第一个答案)。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      看看这个link。

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

      谢谢。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-03-14
          • 2019-02-08
          • 2019-11-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多