【发布时间】:2021-11-14 17:36:34
【问题描述】:
我有一个 Spark 集群,并且必须将 JSON 数据索引到 Elastic Search (ES)。有一列如下(仅两个样本):
"ADDRESS": "PO box 1234, Lahore"
"ADDRESS": [ "PO box 5678, Karachi", "new city Lahore"]
上列的问题是,在某些记录中,它显示为字符串,而在其他一些情况下,它显示为字符串数组。我在ES中测试过上面的案例,在ES中没有问题,它可以索引两种情况而没有问题(如果直接索引的话)。
我编写了一个 Spark (pyspark) 作业来读取大型 JSON,然后将其插入 ES。在 Spark 模式中,它将此字段显示为字符串而不是数组。现在,当我将数据插入 ES 时,我得到以下响应
"ADDRESS": "PO box 1234, Lahore",
"ADDRESS": "[\"PO box 5678, Karachi\", \"new city Lahore\"]",
它不是显示为数组数据,而是显示为字符串。现在,问题出在哪里?我正在阅读 JSON 如下:
df = spark.read.option("multiline", "false").json(data_path)
【问题讨论】:
-
您的期望是什么?你想让你的数据框
df将该列作为字符串还是数组? -
我希望所有数据都作为字符串数组
标签: json apache-spark elasticsearch pyspark