Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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不执行任何操作_Apache Spark_Pyspark - Fatal编程技术网

Apache spark 引用聚合会导致Spark不执行任何操作

Apache spark 引用聚合会导致Spark不执行任何操作,apache-spark,pyspark,Apache Spark,Pyspark,在Spark中,如果我进行聚合,是否有任何方法可以在不强制执行操作的情况下使用这些结果 我试图构建一个具有中间阶段的图,这些中间阶段聚合,然后根据结果有条件地进行分支。据我所知,做到这一点的唯一方法是单独执行每个阶段 例如,在下面的人造代码中,我希望根据聚合的值执行条件语句,但我能想到的唯一方法是操作聚合: df = spark.range(5) df = df.withColumn('flag', when(col('id') < 10, 0).otherwise(1)) df = df

在Spark中,如果我进行聚合,是否有任何方法可以在不强制执行操作的情况下使用这些结果

我试图构建一个具有中间阶段的图,这些中间阶段聚合,然后根据结果有条件地进行分支。据我所知,做到这一点的唯一方法是单独执行每个阶段

例如,在下面的人造代码中,我希望根据聚合的值执行条件语句,但我能想到的唯一方法是操作聚合:

df = spark.range(5)
df = df.withColumn('flag', when(col('id') < 10, 0).otherwise(1))
df = df.withColumn('test', when(df.agg({'flag': 'max'}).first()[0] < lit(1), True).otherwise(False))
... Do more stuff ...
df=spark.range(5)
df=df.withColumn('flag',当(col('id')<10,0)时。否则(1))
df=df.withColumn('test',when(df.agg({'flag':'max'})。first()[0]

理想情况下,我希望这是一个转换,而不是一个动作,但我找不到任何证据证明这是可能的。

如果不计算最大值,就无法评估条件。要获得最大值,您需要搜索所有行,因此您需要执行一个操作。好的,我希望所有操作都可以惰性地进行评估。对我来说,可以懒散地评估聚合的结果是有意义的,尤其是返回一行的聚合,但如果不是这样,那就太酷了