Pyspark: сравнить значения и, если верно, выполнить оператор - PullRequest
0 голосов
/ 02 ноября 2018

Я пытаюсь заставить этот цикл работать, где я сравниваю значение ок. Я хотел бы выполнить оператор if, когда значениетура_ <2. но он всегда возвращает «NULL», хотя, когда я печатаю приблизительно, я получаю правильные результаты (которые меньше, чем 2). Что я делаю не так? </p>

for col in s:
    approx = df.agg(approx_count_distinct(col).alias("count"))
    if approx.collect()[0] < 2:
        print(col)

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Я закончил так:

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)
0 голосов
/ 02 ноября 2018

Вы выполняете условие ЕСЛИ для типа ROW. Можете ли вы проверить, что является типом ок.

type(approx.collect()[0])

Вам нужно изменить его на **if approx.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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...