#function #pyspark #persist
#функция #pyspark #сохраняется
Вопрос:
Когда я пытаюсь сохранить Dataframe
в pyspark, я сталкиваюсь с AttributeError: 'NoneType' object has no attribute 'persist'
ошибкой. псевдокод выглядит следующим образом:
ss = SparkSession.builder.getOrCreate()
sqlDF = ss.sql(query) // query contains udf
sqlDF.persist()
Результат ss.sql(query).show(10)
выглядит следующим образом
dt| t| u| ra| tm|tra| alg| fa|
---------- --- -------------------- --- --- --- ----- ---
|2019-04-22| 1|0e4466fb752e0ff6a...| 2| | |h5_rl| |
|2019-04-22| 1|05ce59ff55b70a805...| 4| | | null| |
|2019-04-22| 1|07bc6ebd8f9d0082d...| 2| | |h5_rl| |
Вызвана ли ошибка тем, что некоторые значения ячейки не имеют типа? Если да, то как это решить?
Комментарии:
1. Вы можете попробовать sqlDF.persist(StorageLevel. MEMORY_AND_DISK)
Ответ №1:
Вы можете попробовать распечатать схему sqlDF
с sqlDF.printSchema()
и обнаружить, что какой-то столбец имеет значение NoneType
, так что spark не знает, как их сериализовать. Это может быть вызвано тем, что все значения некоторого столбца равны нулю, тогда spark выведет схему этого столбца как NoneType
. Вы можете вручную привести столбец к желаемому типу в запросе.