Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 在spark数据帧(python)中使用过滤器_Apache Spark - Fatal编程技术网

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的情况下,哪种方法可以做到这一点?