Pyspark或SQL从另一个表返回字符串,其行ID对应于另一个表中的数组

时间:2017-03-21 13:10:55

标签: mysql apache-spark pyspark

我有一个格式为

的表格
string_1 | id_array
"a"      | [2,3,4]
"c"      | [2,4,5]

和另一张表:

id | string_2
1  | s1
2  | s2
3  | s3
4  | s4
5  | s5

id_array值对应于第二个表中的id值。

基本上我想用第二个表中相应的字符串值替换第一个表中的id_array值,如下所示:

string_1 | id_array_string
"a"      | [s2,s3,s4]
"c"      | [s2,s4,s5]

1 个答案:

答案 0 :(得分:0)

我不知道你尝试了什么,但这里是我身边的基本代码片段。 我将df1作为表1的数据帧,依此类推df2。

import pyspark.sql.functions as F
df1.select("string_1",F.explode("id_array").alias("id_array")).join(df2, df1.id_array = df2.id).groupBy("string_1").agg(F.collect_set("string_2").alias("id_array_string")).show()

我没有测试,但这对你有用。如需更多参考,请查看类似的答案Collect set by group?