pandas.read_parquet создает ArrowIOError на многораздельном искровом столе - PullRequest
0 голосов
/ 04 июня 2018

У меня странная проблема, я думаю, что это может быть ошибка в 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...