У меня есть Spark DataFrame в PySpark, из которого я пытаюсь удалить нули.
Раньше при очистке во время синтаксического анализа я запускал метод convert_to_null
для столбца title
, который в основном проверяет, содержит ли строка буквально "None"
, и, если это так, преобразует его в фактический * 1006.*.Таким образом, Spark преобразует его во внутренний нулевой тип.
Теперь я пытаюсь удалить строки с этим нулевым типом в столбце title
.Вот все, что я пытался удалить мои нули:
new_df = df.na.drop('title')
new_df = df[F.col('title').isNotNull()]
new_df = df[~F.col('title').isNull()]
Но я всегда получаю этоошибка при new_df.show()
вызове через несколько строк:
Py4JJavaError: An error occurred while calling o2022.showString.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 1 in stage 87.0 failed 1 times, most recent failure: Lost task 1.0 in stage 87.0 (TID 314, localhost, executor driver): org.apache.spark.api.python.PythonException: Traceback (most recent call last):
File "/usr/local/spark/python/lib/pyspark.zip/pyspark/worker.py", line 230, in main
process()
File "/usr/local/spark/python/lib/pyspark.zip/pyspark/worker.py", line 225, in process
serializer.dump_stream(func(split_index, iterator), outfile)
File "/usr/local/spark/python/lib/pyspark.zip/pyspark/serializers.py", line 324, in dump_stream
self.serializer.dump_stream(self._batched(iterator), stream)
File "/usr/local/spark/python/lib/pyspark.zip/pyspark/serializers.py", line 139, in dump_stream
for obj in iterator:
File "/usr/local/spark/python/lib/pyspark.zip/pyspark/serializers.py", line 313, in _batched
for item in iterator:
File "<string>", line 1, in <lambda>
File "/usr/local/spark/python/lib/pyspark.zip/pyspark/worker.py", line 75, in <lambda>
return lambda *a: f(*a)
File "/usr/local/spark/python/pyspark/util.py", line 55, in wrapper
return f(*args, **kwargs)
File "<ipython-input-16-48bc3ec1b5d9>", line 5, in replace_none_with_null
TypeError: 'in <string>' requires string as left operand, not NoneType
Я думаю, что схожу с ума.Я понятия не имею, как все исправить.Любая помощь приветствуется.Спасибо!