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

将PySpark DataFrame ArrayType字段合并为单个ArrayType字段

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

将PySpark DataFrame ArrayType字段合并为单个ArrayType字段

火花 > = 2.4

您可以使用

concat
功能(SPARK-23736):

from pyspark.sql.functions import col, concatdf.select(concat(col("tokens"), col("tokens_bigrams"))).show(truncate=False)# +---------------------------------+ # |concat(tokens, tokens_bigrams)   |# +---------------------------------+# |[one, two, two, one two, two two]|# |null       |# +---------------------------------+

要保留其中一个值时的数据,

NULL
可以
coalesce
使用
array

from pyspark.sql.functions import array, coalescedf.select(concat(    coalesce(col("tokens"), array()),    coalesce(col("tokens_bigrams"), array()))).show(truncate = False)# +--------------------------------------------------------------------+# |concat(coalesce(tokens, array()), coalesce(tokens_bigrams, array()))|# +--------------------------------------------------------------------+# |[one, two, two, one two, two two]  |# |[three]      |# +--------------------------------------------------------------------+

火花 <2.4

不幸的是

array
,一般情况下要串联列,您将需要一个UDF,例如:

from itertools import chainfrom pyspark.sql.functions import col, udffrom pyspark.sql.types import *def concat(type):    def concat_(*args):        return list(chain.from_iterable((arg if arg else [] for arg in args)))    return udf(concat_, ArrayType(type))

可以用作:

df = spark.createDataframe(    [(["one", "two", "two"], ["one two", "two two"]), (["three"], None)],     ("tokens", "tokens_bigrams"))concat_string_arrays = concat(StringType())df.select(concat_string_arrays("tokens", "tokens_bigrams")).show(truncate=False)# +---------------------------------+# |concat_(tokens, tokens_bigrams)  |# +---------------------------------+# |[one, two, two, one two, two two]|# |[three]    |# +---------------------------------+


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

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

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