栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Spark SQL中压缩两个数组列

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Spark SQL中压缩两个数组列

与Python等效的Spark
SQL为

pyspark.sql.functions.arrays_zip

pyspark.sql.functions.arrays_zip(*cols)

集合函数:返回结构的合并数组,其中第N个结构包含输入数组的所有第N个值。

因此,如果您已经有两个数组:

from pyspark.sql.functions import splitdf = (spark    .createDataframe([('abc, def, ghi', '1.0, 2.0, 3.0')])    .toDF("column_1", "column_2")    .withColumn("column_1", split("column_1", "s*,s*"))    .withColumn("column_2", split("column_2", "s*,s*")))

您可以将其应用于结果

from pyspark.sql.functions import arrays_zipdf_zipped = df.withColumn(  "zipped", arrays_zip("column_1", "column_2"))df_zipped.select("zipped").show(truncate=False)+------------------------------------+|zipped        |+------------------------------------+|[[abc, 1.0], [def, 2.0], [ghi, 3.0]]|+------------------------------------+

我们可以将结果合并

transform
(?如何使用变换高阶函数,类型错误:列不是可迭代-
如何遍历数组类型()? :

df_zipped_concat = df_zipped.withColumn(    "zipped_concat",     expr("transform(zipped, x -> concat_ws('_', x.column_1, x.column_2))"))df_zipped_concat.select("zipped_concat").show(truncate=False)+---------------------------+|zipped_concat   |+---------------------------+|[abc_1.0, def_2.0, ghi_3.0]|+---------------------------+

注意事项

高阶功能

transform
,并
arrays_zip
已在Apache中星火2.4引入。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/638315.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号