#python #validation #pyspark #apache-spark-sql
#питон #утверждение #пыспарк #apache-spark-sql
Вопрос:
У меня есть фрейм данных, который я должен проверить с помощью PySpark. Один из столбцов может принимать только значения от 0 до 100, и у меня есть другой столбец, который принимает только значения от 1 до 5. Каков был бы правильный подход к проверке этой информации? В идеале, программа должна завершиться сбоем, если она выйдет из строя, указывая на ошибку.
Ответ №1:
Я думаю, что я бы просто отфильтровал строки, которые нарушают условия, а затем заявил, что их нет:
df = spark.createDataFrame([ Row(a=1, b=1), Row(a=6, b=101), ]) rows_with_issues = df.where(~F.col('a').between(1,5) | ~F.col('b').between(0,100)) n_rows_with_issues = rows_with_issues.count() if n_rows_with_issues gt; 0: raise Exception( f'The {n_rows_with_issues} rows violate the data constraints. Showing five rows:n' 'n'.join([str(r) for r in rows_with_issues.take(5)]) )
Однако такой тест является дорогостоящим для больших наборов данных, поскольку все данные должны быть обработаны.
Комментарии:
1. Я думаю, вам тоже следует добавить проверки на наличие нулевых значений.