Apache spark 在spark数据帧(python)中使用过滤器
我正在使用以下格式的数据帧:Apache spark 在spark数据帧(python)中使用过滤器,apache-spark,Apache Spark,我正在使用以下格式的数据帧: +------+--------+ | id | values | +------+--------+ | 1 |[1,2,3] | +------+--------+ | 2 |[1,2,3] | +------+--------+ | 3 |[1,3] | +------+--------+ | 4 |[1,2,8] | . . . 我想过滤并获取值列表列长度等于或大于3的行。假设数据帧被称为
+------+--------+
| id | values |
+------+--------+
| 1 |[1,2,3] |
+------+--------+
| 2 |[1,2,3] |
+------+--------+
| 3 |[1,3] |
+------+--------+
| 4 |[1,2,8] |
.
.
.
我想过滤并获取值列表列长度等于或大于3的行。假设数据帧被称为df
,我将执行以下操作:
udf_filter = udf(lambda value: len(alist)>=3,BooleanType())
filtered_data = df.filter(udf_filter("values"))
当我跑步时:
filtered_data.count()
它总是给出不同的结果。怎么可能呢
注:
df
通过采样来自另一个数据帧(同一种子)df.count
始终给出相同的数字df = df_original.sample(False, 0.01, 42)
即使我使用的是seed=42
如果我多次运行它,也不会得到相同的结果。为了避免我坚持使用df,它总是给出相同的结果:
df.persist()
但是我不明白的是,
seed
没有给出相同的样本行。原因可能是什么?a)这不需要自定义项,b)如果采样结果为df
,并且您不使用固定种子,则每次运行时都不太可能获得相同的计数,因此过滤的\u数据。计数在每次运行时都会不同execution@zero323种子每次都是一样的。不使用UDF的方法是什么?a)这不需要UDF,b)如果采样产生df
结果,并且您不使用固定种子,则每次运行都不太可能获得相同的计数,因此过滤的\u数据。计数
在每次运行时都会不同execution@zero323种子每次都是一样的。在没有UDF的情况下,哪种方法可以做到这一点?