我有以下数据帧,其中包含一些包含数组的列。(我们使用的是火花 1.6)
+--------------------+--------------+------------------+--------------+--------------------+-------------+
| UserName| col1 | col2 |col3 |col4 |col5 |
+--------------------+--------------+------------------+--------------+--------------------+-------------+
|foo |[Main, Indi...|[1777203, 1777203]| [GBP, GBP]| [CR, CR]| [143, 143]|
+--------------------+--------------+------------------+--------------+--------------------+-------------+
我期望得到以下结果:
+--------------------+--------------+------------------+--------------+--------------------+-------------+
| UserName| explod | explod2 |explod3 |explod4 |explod5 |
+--------------------+--------------+------------------+--------------+--------------------+-------------+
|NNNNNNNNNNNNNNNNN...| Main |1777203 | GBP | CR | 143 |
|NNNNNNNNNNNNNNNNN...|Individual |1777203 | GBP | CR | 143 |
----------------------------------------------------------------------------------------------------------
我尝试过横向视图:
sqlContext.sql("SELECT `UserName`, explod, explod2, explod3, explod4, explod5 FROM sourceDF
LATERAL VIEW explode(`col1`) sourceDF AS explod
LATERAL VIEW explode(`col2`) explod AS explod2
LATERAL VIEW explode(`col3`) explod2 AS explod3
LATERAL VIEW explode(`col4`) explod3 AS explod4
LATERAL VIEW explode(`col5`) explod4 AS explod5")
但是我得到了一个笛卡尔积,有很多重复。我已经尝试了相同的方法,使用带有列的方法分解所有列,但仍然得到很多重复项
.withColumn("col1", explode($"col1"))...
当然,我可以对最终的数据帧进行区分,但这不是一个完美的解决方案。有什么方法可以分解这些列而不得到所有这些副本吗?
谢啦!
如果您使用的是Spark 2.4.0或更高版本,< code>arrays_zip会使任务变得更容易
val df = Seq(
("foo",
Seq("Main", "Individual"),
Seq(1777203, 1777203),
Seq("GBP", "GBP"),
Seq("CR", "CR"),
Seq(143, 143)))
.toDF("UserName", "col1", "col2", "col3", "col4", "col5")
df.select($"UserName",
explode(arrays_zip($"col1", $"col2", $"col3", $"col4", $"col5")))
.select($"UserName", $"col.*")
.show()
输出:
+--------+----------+-------+----+----+----+
|UserName| col1| col2|col3|col4|col5|
+--------+----------+-------+----+----+----+
| foo| Main|1777203| GBP| CR| 143|
| foo|Individual|1777203| GBP| CR| 143|
+--------+----------+-------+----+----+----+
给定一个spark 2.3数据帧,其中一列包含JSON数组,如何将其转换为JSON字符串的spark数组?或者,等效地,我如何分解JSON,以便输入: 我得到: 非常感谢! p、 数组中条目的形状是可变的。 下面是一个示例输入,如果它是有用的: p. p. s.这不同于迄今为止所有建议的重复问题。例如,如何使用火花数据帧查询JSON数据列?的问题和解决方案适用于(1)数据是所有JSON数据,因此整
我有一个模式,其中每行包含多个数组列,我想独立于每个数组列爆炸。 假设我们有列: 我想要一个输出: 想法? (哦,我正在尝试这样做,所以我不必随着模式的变化而更新代码,也因为实际的模式有点大…) PS -支持这个非常相似但不同的问题,我无耻地从这个问题中窃取了示例数据。 编辑:@oliik赢了,但是,如果能用<code>df来实现这一点,那也太棒了。flatMap(主要是因为我仍然不去摸索<cod
问题内容: 我有一个问题,我有一个字符串数组,并且我想在其他定界符中爆炸。例如 我需要一个在@或vs中爆炸的数组。 我已经写了一个解决方案,但是如果每个人都有更好的解决方案,请在此处发布。 问题答案: 怎么用
我正在使用Spark SQL(我提到它是在Spark中,以防影响SQL语法-我还不太熟悉,还不能确定),我有一个表,我正在尝试重新构造,但我在尝试同时转置多个列时遇到了麻烦。 基本上,我有看起来像这样的数据: 并且我想同时分解varA和varB(长度将始终保持一致) - 因此最终输出如下所示: 但是我似乎只能让一个explee(var)语句在一个命令中工作,如果我尝试链接它们(即在第一个分解命令之
本文向大家介绍JS实现烟花爆炸效果,包括了JS实现烟花爆炸效果的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了JS实现烟花爆炸的具体代码,供大家参考,具体内容如下 更多JavaScript精彩特效分享给大家: Javascript菜单特效大全 javascript仿QQ特效汇总 JavaScript时钟特效汇总 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊
我正在使用SparkSQL(我提到它在Spark中,以防影响SQL语法——我还不够熟悉,无法确定),我有一个正在尝试重新构建的表。我有一种在本地工作的方法,但是当我尝试在AWS EC2实例上运行相同的命令时,我会收到错误报告,说我有一个“未解析的操作符” 基本上我有这样的数据: 我在 varA 上的 sql 上下文中使用“分解”命令。当我在本地运行此命令时,情况会正确返回,但在 AWS 上,它们会