В рамках процесса интеграции данных, над которым я работаю, мне необходимо сохранить Spark SQL DataFrame в качестве внешней таблицы Hive.
Мои ограничения на данный момент:
- В настоящее время ограничено Spark 1.6 (v1.6.0)
- Необходимо сохранить данные в определенном месте, сохраняя данные, даже если определение таблицы удалено (отсюда внешняя таблица).
Я нашел удовлетворительное решение для записи кадра данных df
следующим образом:
df.write.saveAsTable('schema.table_name',
format='parquet',
mode='overwrite',
path='/path/to/external/table/files/')
Выполнение describe extended schema.table_name
для результирующей таблицы подтверждает, что она действительно является внешней. Я также могу подтвердить, что данные сохраняются (по желанию), даже если сама таблица удалена.
Меня больше всего беспокоит то, что я нигде не могу найти задокументированный пример этого, и я не могу найти много упоминаний об этом в официальных документах, особенно об использовании path
для принудительного создания внешней таблицы. (https://spark.apache.org/docs/1.6.0/api/python/pyspark.sql.html#pyspark.sql.DataFrameWriter).
Есть ли лучший/безопасный/более стандартный способ сохранения фрейма данных?