python - Pyspark 加盐 : replace null in column with random negative values

标签 python apache-spark-sql

我正在对许多列执行联接,这些列有时可能包含数十亿行空值,因此我想对列加盐以防止联接后出现倾斜,如 Jason Evan 的帖子中提到的:https://stackoverflow.com/a/43394695

我在 Python 中找不到等效的示例,而且语法差异很大,我不知道如何翻译它。

我大约有这个:

import pyspark.sql.functions as psf
big_neg = -200
for column in key_fields: #key_fields is a list of join keys in the dataframe
    df = df.withColumn(column,
                       psf.when(psf.col(column).isNull(),
                                psf.round(psf.rand().multiply(big_neg))
                      ).otherwise(df[column]))

目前由于语法错误而失败:

TypeError: 'Column' object is not callable

但是我已经尝试了很多语法组合来摆脱 typeError 并被难住了。

最佳答案

休息一下后我实际上能够弄清楚了。

我认为这会对遇到此问题的其他人有所帮助,因此我将发布我的解决方案:

df = df.withColumn(column, psf.when(df[column].isNull(), psf.round(psf.rand()*(big_neg))).otherwise(df[column]))

关于python - Pyspark 加盐 : replace null in column with random negative values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55170607/

相关文章:

apache-spark - 过滤超前/滞后为特定值的行(带过滤器的窗口)

python - 从 pandas 数据框中选择带有日期的行

python - 无法切换到 Facebook 登录警报,因为窗口名称每次都更改

sql - Hive 爆炸并从字符串中提取值

apache-spark - 外部查找 Spark 流

apache-spark - 运行bin/pyspark时出现这个程序报错需要先build Spark

python - 如何使用光谱python处理多光谱栅格文件?

python - 构建、psycopg2、postgresql

python - Pandas Apply 函数返回两个新列

python - 将时间序列pySpark数据帧拆分为测试和训练,而无需使用随机拆分