我在pyspark数据框主题中需要帮助。 我有一个1000+列和100000+行的数据帧。如果有elif条件,我有10000+,在每个if else条件下,很少有全局变量增加一些值。 现在我的问题是如何才能在pyspark中实现这一点。 我读到了关于过滤器和基于条件返回行的函数,我需要检查那些10000+ if else条件并执行一些操作。
任何帮助都将不胜感激。
如果你能给出一个有很大帮助的小数据集的例子。
三江源
答案 0 :(得分:0)
如果有elif条件,您可以定义一个包含所有人的函数,然后将此函数应用到DataFrame的每一行。
只需使用.rdd
将DataFrame转换为普通RDD,然后使用map()
功能。
例如,DF.rdd.map(lambda row: func(row))
希望它可以帮到你。
答案 1 :(得分:0)
据我了解,您只想在迭代DataFrame时更新一些全局计数器。为此,您需要:
ac_0 = sc.accumulator(0)
ac_1 = sc.accumulator(0)
def accumulate(row):
if row.foo:
ac_0.add(1)
elif row.bar:
ac_1.add(row.baz)
foreach
:df.foreach(accumulate)
> ac_0.value
>>> 123