запись pyspark df.write (паркет) на S3, но данные отсутствуют в половине столбцов - PullRequest
0 голосов
/ 18 июня 2019

Использование EMR с 4 рабочими и 1 мастером

  • метка выпуска: emr-5.24.0
  • Распределение Hadoop: Amazon 2.8.5
  • Применение: Spark 2.4.2, Hive 2.3.4

Я могу обработать свои данные и создать правильный фрейм данных в pyspark. Но когда я записываю (паркет) df на S3, файлы действительно помещаются в S3 в правильном месте, но в 3 из 7 столбцов внезапно пропадают данные.

Может кто-нибудь объяснить, что мне нужно сделать, чтобы это исправить? Вот соответствующий код и скриншоты результатов. Я переименовал некоторые столбцы на скриншотах, чтобы сохранить конфиденциальность.

Мой код:

# For multi tables
df_multi.show(5)
df_multi.printSchema()
print("\n At line 578, after show(), writing to EDL\n")
df_multi.write.mode("append").parquet(multi_s3_bucket_dir)
print("\n  SCRIPT COMPLETED  \n")

Скриншот вывода при запуске скрипта. Я запускаю его как nohup и перенаправляю stdin & sterr в файл, чтобы посмотреть позже screenshot while running

А вот вывод, прочитанный с S3 с использованием Athena: Athena query

1 Ответ

0 голосов
/ 18 июня 2019

ВиноватЗадача решена.Мои имена столбцов в df не точно совпадают с именами столбцов в Athena DDL.Поскольку паркет «схема при чтении», система создала схему, соответствующую df, но она могла импортировать только те столбцы, чье имя совпадает с DID, оставляя остальные пустыми.

Извлеченный урок.

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