gpt4 book ai didi

apache-spark - 如何将字符串数组的列转换为字符串?

转载 作者:行者123 更新时间:2023-12-04 00:30:16 25 4
gpt4 key购买 nike

我有一个列,类型为 array < string >在 Spark 表中。我正在使用 SQL 来查询这些 spark 表。我想转换 array < string >进入 string .

使用以下语法时:

select cast(rate_plan_code  as string) as new_rate_plan  from
customer_activity_searches group by rate_plan_code
rate_plan_code列具有以下值:
["AAA","RACK","SMOBIX","SMOBPX"] 
["LPCT","RACK"]
["LFTIN","RACK","SMOBIX","SMOBPX"]
["LTGD","RACK"]
["RACK","LEARLI","NHDP","LADV","LADV2"]

以下填充在 new_rate_plan柱子:
org.apache.spark.sql.catalyst.expressions.UnsafeArrayData@e4273d9f
org.apache.spark.sql.catalyst.expressions.UnsafeArrayData@c1ade2ff
org.apache.spark.sql.catalyst.expressions.UnsafeArrayData@4f378397
org.apache.spark.sql.catalyst.expressions.UnsafeArrayData@d1c81377
org.apache.spark.sql.catalyst.expressions.UnsafeArrayData@552f3317

当我转换 decimal 时,Cast 似乎有效至 intintdouble ,但在这种情况下不是。好奇为什么 Actor 不能在这里工作。
非常感谢您的帮助。

最佳答案

在 spark 2.1+ 中,您可以直接使用 concat_ws 将 string/array< String > 转换(concat with seperator)为 String 。

select concat_ws(',',rate_plan_code) as new_rate_plan  from
customer_activity_searches group by rate_plan_code

这会给你这样的回应:
AAA,RACK,SMOBIX,SMOBPX 
LPCT,RACK
LFTIN,RACK,SMOBIX,SMOBPX
LTGD,RACK
RACK,LEARLI,NHDP,LADV,LADV2

PS:concat_ws 不适用于类似 array< Long > ...,正如 Jacek 所说,UDF 或 map 将是唯一的选择。

关于apache-spark - 如何将字符串数组的列转换为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38924762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com