【问题标题】:get specific rows from spark dataframe using certain column and list使用特定列和列表从 spark 数据框中获取特定行
【发布时间】:2021-07-15 01:31:49
【问题描述】:

我有大型 spark 数据框 'df',(超过十亿行)由

meta_info | date | comment

我还有一个变量“lst”,它存储了我感兴趣的所有 id。

只保留 id 包含在 lst 中的行的方法是什么?

df.where("meta_info".isin(lst)).show()

这是我尝试过的,但它说“字符串”没有 isin

【问题讨论】:

  • meta_info 是什么?您在数据框中没有该列。
  • Psidom,我的错。 id = meta_info,我把它弄混了,把自己弄糊涂了XD
  • df.where(df.meta_info.isin(lst)) ?您需要df.meta_info 才能引用该列。

标签: python list dataframe apache-spark


【解决方案1】:

如果您的列表“大”,第一个选择是依赖连接:

data = [[value] for value in lst]
safelist = spark.createDataFrame(data=data, schema=["meta_info"])
filtered = df.join(safelist, on='meta_info')
filtered.show()

其他选项是过滤您的数据集,但仍然可以广播您的列表以优化传输给您的执行者的数据:

import pyspark.sql.functions as F
blst = sc.broadcast(lst)
df.filter(F.col("meta_info").isin(blst.value)).show()

我建议您比较数据集上的两个选项。

【讨论】:

    猜你喜欢
    • 2016-05-16
    • 1970-01-01
    • 1970-01-01
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    • 1970-01-01
    • 2011-07-22
    相关资源
    最近更新 更多