如何将 pyspark 数据框的列值转换为逗号分隔的字符串

How to convert a pyspark dataframe's column value to comma separated string

我是pyspark新手 需要一点帮助来解决以下语法错误

ids_2_update = df_to_update.select("id_pk")
# below is obviously giving me exception …can only concatenate str (not "list") to str' …
connection_options["preactions"] = "delete from my_schema.my_table where id_pk in("+ids_2_update.rdd.flatMap(lambda x: x).collect()+");"
appended_dynamic_df = DynamicFrame.fromDF(appended_df, glueContext, "convert_ctx")
glueContext.write_from_options(frame_or_dfc=appended_dynamic_df, connection_type=redshift_connection_type,connection_options=connection_options)

知道我该怎么做吗?

免责声明 我需要使用 pyspark API 而不是 pySpark sql

问题是 rdd.collect() returns 一个元素的列表,你不能连接一个字符串和一个列表,所以你首先需要将列表转换为逗号分隔的字符串以把它放在 in 子句中。你可以尝试这样的事情:

connection_options["preactions"] = "delete from my_schema.my_table where id_pk in("+','.join(ids_2_update.rdd.flatMap(lambda x: x).collect())+");"

这假设列中的元素是字符串,否则您应该先将它们转换为字符串。