java - Apache Spark XML 转换为 JavaRDD
问题描述
我尝试使用 spark 读取 xml 文件并将其转换为 JavaRDD 数组。我已阅读有关如何将其转换为 DataSet 的信息,但我想知道 JavaRDD 是否可行。我必须提到,在我的 xml 文件中,我有一个大小并不总是相同的列表。这是我的 XML 文件的示例。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<logs>
<log>
<id>1</id>
<clientId>1</clientId>
<date>Wed Apr 03 21:16:18 EEST 2019</date>
<itemList>
<item>2</item>
</itemList>
</log>
<log>
<id>2</id>
<clientId>2</clientId>
<date>Wed Apr 03 21:16:19 EEST 2019</date>
<itemList>
<item>1</item>
<item>2</item>
<item>3</item>
</itemList>
</log>
</logs>
谢谢!
解决方案
这是一个可能的解决方案:https ://github.com/databricks/spark-xml/issues/213
这是您需要的:
import com.databricks.spark.xml.XmlReader
val rdd = sc.parallelize(Seq("<books><book>book1</book><book>book2</book></books>"))
val df = new XmlReader().xmlRdd(spark.sqlContext, rdd)
df.show
+--------------+
| book|
+--------------+
|[book1, book2]|
+--------------+
df.printSchema
root
|-- book: array (nullable = true)
| |-- element: string (containsNull = true)
从 rdd 到 JavaRDD 相当简单。(wrapRdd,查看文档)。
我希望它回答了你的问题。
推荐阅读
- php - 通过添加自定义表格自定义 WooCommerce 电子邮件
- javascript - 倒计时到 0 时开始计数 | 香草 Javascript
- javascript - Symfony 5 / Encore - Javascript 问题
- nginx - NGINX:多个上游的相同哈希
- javascript - 在javascript中减小或压缩图像大小
- java - 不在其他活动中执行的基本活动抽象类方法
- ios - 创建 Secp256k1 EC 密钥对 Swift
- c - C 应用程序中的 MQTT 代理
- typescript - 是否可以在 TypeScript 中创建通用映射对象类型?
- python - 在 Matplotlib 中填充 3 个图形之间的空间