【问题标题】:How Update RDD In Spark with FILTER如何使用 FILTER 在 Spark 中更新 RDD
【发布时间】:2022-07-05 22:28:00
【问题描述】:

我在 spark 文件中有一个 RDD,它有两列 O 和 D。列的每个值之间都有一条边。例如,

O D
a b
b g
c t
g a

这意味着 a 与 b 相关...我需要这样的 RDD 文件,但过滤所有未出现在列 O 中的节点。在这里,我们将在没有行 c -- t 的情况下执行相同操作,因为 t 不是出现在 O 列中。我尝试了一些似乎有效的方法。我确实列出了所有列 O 并过滤了所有未出现在此列表中的 D 值

list_O = df.select('O').rdd.flatMap(lambda x: x).collect()
df1 = df.filter(df.D.isin(list_O)).show()

当我想查看这个新 rdd 的头部时,它是错误的

df1.head(5)

error 我不明白为什么。

有什么想法吗?

【问题讨论】:

  • 我建议不要在该用例中使用collect,如果您正在处理大数据,当您在本地收集所有数据时,它可能会出现 OOM 错误。改用内部连接怎么样?

标签: python apache-spark sparql databricks


【解决方案1】:

是的,我有一个想法。函数 .show() 返回无。删除 .show() (它只应该打印东西)。 df1 在您的代码中设置为 None。

list_O = df.select('O').rdd.flatMap(lambda x: x).collect()
df1 = df.filter(df.D.isin(list_O))

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 2014-07-23
    • 2018-08-09
    • 1970-01-01
    • 2016-04-21
    • 2020-09-26
    • 1970-01-01
    • 2015-07-09
    • 2017-11-15
    相关资源
    最近更新 更多