У меня странная проблема, я думаю, что это может быть ошибка в spark и / или pandas, но я не уверен, что это может быть ошибка пользователя с моей стороны.Это похоже на эту ошибку , которая относится к этой решенной проблеме , но это не совсем то же самое.
Короче говоря, у меня естьфрейм данных pyspark с четырьмя столбцами, четвертый из которых - очень длинная строка (которая на самом деле представляет собой список пар ключ / значение, которые я позже распакую, но более эффективно хранить их как строку для этой части процесса),Когда я делаю df.print_schema()
, я вижу это:
root
|-- attribute: string (nullable = true)
|-- id: long (nullable = true)
|-- label: long (nullable = true)
|-- featureString: string (nullable = true)
Моя цель - записать это в таблицу, которая (по умолчанию в моем кластере) хранится в s3 как паркет.Затем я буду читать каждый отдельный паркет в python позже на отдельном сервере с pd.read_parquet
.
Итак, когда я запускаю:
df.select('attribute','id', 'label', 'featureString')\
.write.saveAsTable('db_name.table_name1', mode='overwrite')
Тогда я могу сделать pd.read_parquet()
наотдельные файлы в s3 и работает нормально.Однако на самом деле я хочу, чтобы каждый файл был всеми строками для данного значения столбца attribute
, поэтому я делаю:
df.select('attribute','id', 'label', 'featureString')\
.repartition('attribute')\
.write.saveAsTable('db_name.table_name2', mode='overwrite')
Но потом, когда я пытаюсь прочитать some (но не все) из файлов с pd.read_parquet
Я получаю ArrowIOError: Invalid parquet file. Corrupt footer.
, что является точной ошибкой от проблемы, с которой я столкнулся выше.
Также кажется, что это большие разделы (~ 4 ГБ илипоэтому) это не может быть прочитано обратно, что также похоже на эту проблему (это было только с большими файлами).Однако эта проблема была связана с чтением обратно в файлы, которые были записаны с помощью pd.to_parquet()
, а я пишу с помощью команды pyspark write().saveAsTable()
.
В любом случае, я в замешательстве.Любая помощь будет принята с благодарностью.
PS - я использую spark 2.3 и pandas 0.23 в python 3.6