在pyspark中不使用collect [duplicate]将列值提取到变量中

kr98yfug  于 2024-01-06  发布在  Spark
关注(0)|答案(1)|浏览(185)

此问题在此处已有答案

Convert spark DataFrame column to python list(11个回答)
2天前关闭。
我的目标是从pyspark对象框架中获取列值到变量中,如果可能的话,作为列表。

  1. Expected output = ["a", "b", "c", ... ]

字符串
我试探着:

  1. [
  2. col.__getitem__("x")
  3. for col in data.select("x").collect()
  4. ]


但它给出了Row对象的列表。

  1. Output : [Row(x='a'), Row(x='b'), Row(x='c'), ...]


我不想使用collect,也不需要Row对象。
尝试了另一种方法:

  1. data.select(f.collect_list("x")).collect()


比以前的版本稍好,但得到:

  1. Output = [Row(collect_list(x) = ['a', 'b', 'c', ...]]


提前感谢和新年快乐!

ezykj2lf

ezykj2lf1#

尝试了三种不同的解决方案:

  1. df.select(f.collect_list("x").alias("temp")).first()["temp"]
  2. Time taken : 32.43s
  3. df.select("x").rdd.flatMap(lambda x:x).collect()
  4. Time taken : 13.19s
  5. [col.__getitem__("x") for col in df.select("x").collect()]
  6. Time taken : 22.77s

字符串
虽然我使用的是收集,但它比其他解决方案更快。P.S df.count ~ 116M

相关问题