Для чего нужен метастор в Спарк?

Я использую SparkSQL в Python. Я создал многораздельную таблицу (~ несколько сотен разделов) и сохранил ее во внутренней таблице Hive, используя hiveContext. Улей склад находится в S3.

Когда я просто делаю "df = hiveContext.table("mytable"). Это займет более минуты, чтобы пройти через все разделы в первый раз. Я думал, что метастор хранит все метаданные. Зачем зажигать все равно нужно проходить через каждый раздел? Можно ли избежать этого шага, чтобы мой запуск мог быть быстрее?

1 ответ

Ключевым моментом здесь является то, что загрузка метаданных файла занимает только много времени только в первом запросе. Причина заключается в том, что SparkSQL не хранит метаданные раздела в метасольве Hive. Для многораздельных таблиц Hive информация о разделах должна храниться в метастазах. В зависимости от того, как таблица будет создана, будет диктовать, как это ведет себя. Судя по предоставленной информации, вы создали таблицу SparkSQL.

SparkSQL хранит схему таблицы (которая включает в себя информацию о разделе) и корневой каталог вашей таблицы, но все же обнаруживает каждый каталог раздела на S3 динамически при выполнении запроса. Насколько я понимаю, это компромисс, поэтому вам не нужно вручную добавлять новые разделы при каждом обновлении таблицы.

Другие вопросы по тегам