【发布时间】:2017-10-30 09:49:19
【问题描述】:
我有以下文件:test.json >
{
"id": 1,
"name": "A green door",
"price": 12.50,
"tags": ["home", "green"]
}
我想将此文件加载到 RDD 中。这是我尝试过的:
rddj = sc.textFile('test.json')
rdd_res = rddj.map(lambda x: json.loads(x))
我收到一个错误:
预期对象:第 1 行第 1 列 (char 0)
我不完全明白json.loads 做了什么。
我该如何解决这个问题?
【问题讨论】:
-
JSON 格式不太适合使用 Spark 文本文件进行处理,因为它会尝试逐行处理,而 JSON 涵盖多行。如果您可以以 JSON 行格式访问您的 JSON 数据(每个 json 对象“扁平化”为单行,这将起作用。或者,您可以将数据保留为上述格式并使用 sc.wholeTextFiles。这将返回一个键/value rdd,其中 key 是文件名,value 是文件内容。然后您可以通过将上面的 json.loads 包装到您通过 mapPartitions 应用的函数中来处理。
-
这其实不是骗子。
标签: json apache-spark pyspark