Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
Loops Pyspark:比较值和if true执行语句_Loops_If Statement_Pyspark_Comparison - Fatal编程技术网

Loops Pyspark:比较值和if true执行语句

Loops Pyspark:比较值和if true执行语句,loops,if-statement,pyspark,comparison,Loops,If Statement,Pyspark,Comparison,我试图使这个循环工作,在这里我比较了一个近似计数的值和一个阈值。我想在distinct_count为时执行if语句。您正在对行类型执行if条件,请检查近似collect()[0]的类型,它应该为int以支持您正在执行的if条件 type(approx.collect()[0]) 如果约为collect()[0][0]

我试图使这个循环工作,在这里我比较了一个近似计数的值和一个阈值。我想在distinct_count为时执行if语句。您正在对行类型执行if条件,请检查近似collect()[0]的类型,它应该为int以支持您正在执行的if条件

type(approx.collect()[0])
如果约为collect()[0][0]<2:**

试试这个,它应该可以工作:

s = ['a','b','c','d','e']

for col in s:
    approx = spark.sql("select 1 AS a")
    if approx.collect()[0][0] < 2:
        print(col)
s=['a','b','c','d','e']
对于col in s:
近似值=spark.sql(“选择1作为参数”)
如果大约收集()[0][0]<2:
打印(col)

我最终是这样做的:

for col in s:
    approx = df.agg(approx_count_distinct(col).alias("count"))
    if (approx.select(F.col("count")).rdd.flatMap(lambda x: x).collect()[0]) < 2:
        print(col)
对于s中的列:
近似=df.agg(近似计数不同(列)。别名(“计数”))
如果(近似选择(F.col(“计数”)).rdd.flatMap(λx:x).collect()[0])<2:
打印(col)
这听起来像是一个错误。你的最终目标是什么?在任何情况下,调用
collect()
都是非常昂贵的,因此最好只调用一次,而不要在循环中重复调用。也许您真正想要的是:
column\u to\u distinct\u count\u dict=next((df.agg中的行为row.asDict()([approxCountDistinct(c).alias(c)(df.columns中的c)).collect(),{})
for col in s:
    approx = df.agg(approx_count_distinct(col).alias("count"))
    if (approx.select(F.col("count")).rdd.flatMap(lambda x: x).collect()[0]) < 2:
        print(col)