给定一个spark 2.3数据帧,其中一列包含JSON数组,如何将其转换为JSON字符串的spark数组?或者,等效地,我如何分解JSON,以便输入:
myJsonColumn
"""[{"a":1},{"b":2}]"""
"""[{"c":3},{"d":4}]"""
"""[{"e":3},{"f":4},{"g":{"h":1}}]"""
我得到:
myExplodedJson
"""{"a":1}"""
"""{"b":2}"""
"""{"c":3}"""
"""{"d":4}"""
"""{"e":3}"""
"""{"f":4}"""
"""{"g":{"h":1}}"""
非常感谢!
p、 数组中条目的形状是可变的。
下面是一个示例输入,如果它是有用的:
List("""[{"a":1},{"b":2}]""", """[{"c":3},{"d":4}]""", """[{"e":3},{"f":4},{"g":{"h":1}}]""").toDF.show
p. p. s.这不同于迄今为止所有建议的重复问题。例如,如何使用火花数据帧查询JSON数据列?的问题和解决方案适用于(1)数据是所有JSON数据,因此整个数据帧可以作为JSON读取。这不适用于这个问题,例如,数据可以是包含JSON字符串的单个列的CSV。这也不同于查询是特定键的查找的情况,这确实包括在get_json_object中。它也不同于数组中元素数量有界的情况,因此只需查找前100个数组索引,然后丢弃空值可能是可以接受的,但即使如此,这也仅适用于原始JSON数组中没有空值的情况。
p. p. s.需要的是类似postgres中的json_array_elements。我的支持是编写一个UDF,它接受JSON字符串并返回一个火花数组,但是UDF往往比内置的慢,而且爆炸JSON可能是核心火花功能。为什么要重新发明基础呢?
您可以将分解
与数组
功能结合使用。
在Spark 2.3.1中,您可以-
val df = List("""[{"a":1},{"b":2}]""", """[{"c":3},{"d":4}]""", """[{"e":3},{"f":4},{"g":{"h":1}}]""").toDF
df.withColumn("value", explode(array(
get_json_object($"value", "$[0]"),
get_json_object($"value", "$[1]")
))).show
这个的输出是-
+-------+
| value|
+-------+
|{"a":1}|
|{"b":2}|
|{"c":3}|
|{"d":4}|
|{"e":3}|
|{"f":4}|
+-------+
我有以下数据帧,其中包含一些包含数组的列。(我们使用的是火花 1.6) 我期望得到以下结果: 我尝试过横向视图: 但是我得到了一个笛卡尔积,有很多重复。我已经尝试了相同的方法,使用带有列的方法分解所有列,但仍然得到很多重复项 当然,我可以对最终的数据帧进行区分,但这不是一个完美的解决方案。有什么方法可以分解这些列而不得到所有这些副本吗? 谢啦!
问题内容: 我有一个包含JSON对象的表。每个JSON对象在方括号中均包含一个数组,并用逗号分隔。 如何使用SQL访问方括号数组中的任何元素,例如“ Matt”? 我在Hadoop上使用“ Hive”。如果您知道如何在SQL中执行此操作,那很好:) 问题答案: 您可以在Hive中执行以下操作: 首先,您需要一个JSON SerDe(Serializer / Deserializer)。我见过的最实
本文向大家介绍JS实现烟花爆炸效果,包括了JS实现烟花爆炸效果的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了JS实现烟花爆炸的具体代码,供大家参考,具体内容如下 更多JavaScript精彩特效分享给大家: Javascript菜单特效大全 javascript仿QQ特效汇总 JavaScript时钟特效汇总 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊
描述 (Description) &可以在逗号分隔的列表中生成所有可能的选择器排列。 例子 (Example) 以下示例演示了如何使用&生成LESS文件中所有可能的选择器排列 - <html> <head> <link rel = "stylesheet" href = "style.css" type = "text/css" /> <title>Combinato
我正在使用SparkSQL(我提到它在Spark中,以防影响SQL语法——我还不够熟悉,无法确定),我有一个正在尝试重新构建的表。我有一种在本地工作的方法,但是当我尝试在AWS EC2实例上运行相同的命令时,我会收到错误报告,说我有一个“未解析的操作符” 基本上我有这样的数据: 我在 varA 上的 sql 上下文中使用“分解”命令。当我在本地运行此命令时,情况会正确返回,但在 AWS 上,它们会
问题内容: 下面是表2中的数据 我可以使用以下查询来爆炸以上数据,并且对于以上数据也可以正常工作- 这样我会得到很好的输出 但是在某些情况下,我在下表中有这样的数据,对于相同的product_id- 我需要使用HiveQL查询为上述数据输出类似的结果- 这有可能做到这一点吗? 任何建议将不胜感激。 PS我几天前问这个问题,但是在这种情况下,数据是不同的,现在数据完全不同了,我需要类似的输出。 问题