Использование неуправляемой таблицы в озере Дельта поверх ADLS Gen2 - PullRequest
0 голосов
/ 15 января 2020

Я использую ADF для загрузки данных с сервера SQL на ADLS GEN2 в формате Parquet Snappy, но размер файла в приемнике достигает 120 ГБ. Размер вызывает много проблем при чтении этого файла. в Spark и объедините данные из этого файла со многими другими файлами Parquet.

Я думаю использовать неуправляемую таблицу Delta Lake с местоположением, указывающим на местоположение ADLS, я могу создать таблицу UnManaged, если я надену Не указывайте ни один раздел, используя этот

" CONVERT TO DELTA parquet. PATH TO FOLDER CONTAINING A PARQUET FILE(S)"

Но если я захочу разбить этот файл для оптимизации запросов

"CONVERT TO DELTA parquet. PATH TO FOLDER CONTAINING A PARQUET FILE(S), PARTITIONED_COLUMN DATATYPE"

Это дает мне ошибку, подобную той, которая упомянута на скриншоте (найдите вложение).

Ошибка в тексте: - org. apache .spark. sql .AnalysisException: Ожидается 1 столбец (и) раздела: [<PARTITIONED_COLUMN>], но найдено 0 столбцов (разделов): [] при анализе имени файла. : abfss: // mydirectory@myADLS.dfs.core.windows.net/level1/Level2/Table1.parquet.snappy;

Там я не могу создать этот файл Parquet, используя ADF с деталями раздела (я открыт для предложений)

Я даю неправильный синтаксис или это можно даже сделать?

1 Ответ

0 голосов
/ 17 января 2020

Хорошо, я нашел ответ на это. Хотя вы преобразуете файлы паркета в дельту, используя описанный выше подход, Delta будет искать правильную структуру каталогов с информацией о разделах вместе с именем столбца, упомянутого в предложении «Partitioned By».

Например, у меня есть папка с именем / Parent, внутри нее у меня есть структура каталогов с информацией о разделах, разделенные паркетные файлы хранятся еще на один уровень внутри разделенных папок, имена папок выглядят следующим образом

/ Parent / Subfolder = 0 / part -00000-62ef2efd-b88b-4dd1-ba1e-3a146e986212.c000.snappy.parquet /Parent/Subfolder=1/part-00000-fsgvfabv-b88b-4dd1-ba1e-3a146e986212.c000.snappy.parquet / родительский / дочерний /part-00000-fbfdfbfe-b88b-4dd1-ba1e-3a146e986212.c000.snappy.parquet /Parent/Subfolder=3/part-00000-gbgdbdtb-b88b-4dd1-ba1e-3a146e986212.c000.snappy.parquet

1006 * в этом случае подпапка - это разделы, созданные внутри родительского элемента.

CONVERT TO DELTA parquet. /Parent/, разделенный (Subfolder INT)

, будет просто Сохраните эту структуру каталогов и преобразуйте все разделенные данные в дельту и сохраните разделенную информацию в metastore.

Резюме: - Эта команда предназначена только для использования уже созданных разделенных файлов Parquet. Чтобы создать раздел на одном файле Parquet, вам нужно выбрать другой маршрут, который я объясню вам позже, если вам интересно;)

...