Когда я создаю таблицу в athena с синтаксисом CTAS (пример ниже), таблицы регистрируются для склеивания таким образом, что когда я читаю ту же таблицу в кластере EMR с искрой (py), каждый раздел читается дважды, но когда я читаю это с Афиной, все в порядке. Когда я создаю таблицу с помощью spark с синтаксисом write.saveAsTable
, она регистрируется для правильного склеивания, и эта таблица правильно читается с помощью Spark и Athena.
Я ничего не нашел в документации по spark / athena / glue об этом. После некоторых проб и ошибок я обнаружил, что есть свойство таблицы склейки, которое задается искрой, а не афиной: spark.sql.sources.provider='parquet'
. Когда я устанавливаю это вручную для таблиц, созданных с помощью athena, искра будет правильно читать его. Но это кажется уродливым решением, и я хотел бы понять, что происходит в фоновом режиме. И я ничего не нашел об этом свойстве таблицы.
Синтаксис создания таблицы Athena:
CREATE TABLE {database}.{table}
WITH (format = 'Parquet',
parquet_compression = 'SNAPPY',
external_location = '{s3path}')
AS SELECT