在Pyspark的数据框架中迭代列,而无需为单个列制作不同的数据框架



我们如何通过数据框中的列迭代列在同一dataframe中分别对某些或所有列进行计算,而无需对单个列进行不同的数据框(与映射类似于映射,通过映射通过行通过行迭代,在行中通过行迭代。RDD和一行执行计算,而无需为每行制作不同的RDD)。我达到了下面给出的解决方案。

l = list of column names
df = dataframe in pyspark
def plusone(df_column):
    return (df_column + 1)
df1 = df.select(map(lambda x: (plusone(getattribute(df,l[x]))) if x ==0 else getattribute(df,l[x]), range(len(l))))
print df1.show()

以这种方式,我获得了一个数据框,其中具有我想要的特定列中的更改,而不是为列创建不同的数据框,然后与DF合并并删除了旧列。

此代码的问题是,它不会在列表上迭代时在Spark上分发。我想要以分布式的方式这样的东西。

P.S.-我不想使用RDD。

预先感谢!

而不是使用映射,而是与Spark UDF上的数据框架一起使用。在UDF内部,以这种方式定义功能并执行逻辑:

  1. 您不使用列表,而不是平行的
  2. UDF以及内部功能将传递给每个罪犯,该罪犯将并行运行。

相关内容

  • 没有找到相关文章

最新更新