Как исправить размер блока во внешних таблицах блоков данных? - PullRequest
0 голосов
/ 08 января 2019

У меня есть блокнот SQL для изменения данных и вставки в другую таблицу.

У меня есть ситуация, когда я пытаюсь изменить размер хранимого блока в blobStorage, я хочу иметь все больше и больше файлов. Я пытаюсь изменить много параметров.

Итак, я нашел поведение.

Когда я запускаю ноутбук, команда создает файлы размером почти 10 МБ для каждого.

Если я создаю таблицу внутри блоков данных и запускаю другую команду

создать external_table как

выберите * из внутренней_таблицы

файлы имели почти 40 МБ ...

Так что мой вопрос ..

Есть ли способ исправить минимальный размер блока во внешних таблицах блоков данных? Когда я преобразовываю данные в блокноте SQL, у нас есть лучшие практики? Как преобразовать все данные и хранить их локально, чтобы после этого переместить данные во внешний источник?

Спасибо!

1 Ответ

0 голосов
/ 08 января 2019

У Spark нет простого способа управления размером выходных файлов. Один из методов, который используют люди, - это вызвать repartition или coalesce для количества желаемых файлов. Чтобы использовать это для управления размером выходных файлов, вам необходимо иметь представление о том, сколько файлов вы хотите создать, например, чтобы создать файлы размером 10 МБ, если ваши выходные данные имеют размер 100 МБ, вы можете вызвать repartition(10) перед командой записи.

Похоже, вы используете блоки данных, в этом случае вы можете использовать команду OPTIMIZE для таблиц Delta. OPTIMIZE Delta возьмет ваши базовые файлы и сведет их для вас в файлы размером приблизительно 1 ГБ, что является оптимальным размером для JVM в случаях использования больших данных.

https://docs.databricks.com/spark/latest/spark-sql/language-manual/optimize.html

...