Прерывистое получение не может создать ошибку управляемой таблицы при создании таблицы из искры - PullRequest
1 голос
/ 25 сентября 2019

Мы периодически сталкиваемся с ошибкой в ​​искре 2.4 при сохранении управляемой таблицы от искры.

Ошибка - pyspark.sql.utils.AnalysisException: u "Невозможно создать управляемую таблицу ('hive_issue.table'). Связанное расположение ('s3: // {bucket_name} / EMRFS_WARE_TEST167_new /warehouse / hive_issue.db / table ') уже существует.; "

Шаги для воспроизведения-- 1. Создайте кадр данных из данных среднего размера искры (файл CSV 30 МБ) 2. Сохраните кадр данных в виде таблицы 3Завершите сеанс, когда вышеупомянутая операция выполняется

Примечание - Состояние завершения сеанса - просто способ воспроизвести эту проблему.В реальном времени мы сталкиваемся с этой проблемой периодически, когда выполняем одни и те же искровые задания несколько раз.Мы используем EMRFS и HDFS из кластера EMR, и мы сталкиваемся с одной и той же проблемой в обеих системах.Единственный способ исправить это - удалить целевую папку, в которой таблица будет хранить свои файлы, что для нас не вариант, и нам нужно хранить историческую информацию в таблице, поэтому мы используем режим APPEND при записи в таблицу.

Мы просмотрели документацию spark 2.4 [1] и обнаружили, что spark больше не позволяет создавать таблицы управления для непустых папок.

  1. Любая причина изменения поведения spatk
  2. Для нас это выглядит как критическое изменение, поскольку несмотря на то, что указание опции «перезаписать» не позволяет уничтожить существующие данные и создать таблицы
  3. Есть ли у нас какое-либо решение этой проблемы.

[1] Начиная с Spark 2.4, создание управляемой таблицы с непустым расположением не допускается.Исключение выдается при попытке создать управляемую таблицу с непустым местоположением.Если для true установлено значение spark.sql.legacy.allowCreatingManagedTableUsingNonemptyLocation, восстанавливается предыдущее поведение.Эта опция будет удалена в Spark 3.0.

Спасибо, Abhijeet

from pyspark.sql import SparkSession
sc = SparkSession.builder.enableHiveSupport().getOrCreate()
df = sc.read.csv("s3://{sample-bucket}1/DATA/consumecomplians.csv")
print "STARTED WRITING TO TABLE"
# Terminate session using ctrl + c after this statement post df.write action started
df.write.mode("append").saveAsTable("hive_issue.table")
print "COMPLETED WRITING TO TABLE"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...