Я использую Spark sql для блоков данных, который использует хранилище метаданных Hive, и я пытаюсь настроить задание / запрос, который использует довольно много столбцов (20+).
Время, необходимое для выполнения проверок валидации хранилища метаданных, линейно масштабируется в зависимости от количества столбцов, включенных в мой запрос - есть ли способ пропустить этот шаг? Или предварительно просчитать чеки? Или, по крайней мере, сделать так, чтобы метастор проверял только один раз для каждой таблицы, а не один раз для столбца?
Небольшой пример: когда я запускаю следующее, даже перед вызовом display или collect, проверка хранилища метаданных выполняется один раз:
new_table = table.withColumn("new_col1", F.col("col1")
и когда я запускаю следующее, средство проверки хранилища метаданных выполняется несколько раз и, следовательно, занимает больше времени:
new_table = (table
.withColumn("new_col1", F.col("col1")
.withColumn("new_col2", F.col("col2")
.withColumn("new_col3", F.col("col3")
.withColumn("new_col4", F.col("col4")
.withColumn("new_col5", F.col("col5")
)
Хранилище метастазов проверяет, что это выглядит так в узле драйвера:
20/01/09 11:29:24 INFO HiveMetaStore: 6: get_database: xxx
20/01/09 11:29:24 INFO audit: ugi=root ip=unknown-ip-addr cmd=get_database: xxx
Вид для пользователя на блоках данных:
Performing Hive catalog operation: databaseExists
Performing Hive catalog operation: tableExists
Performing Hive catalog operation: getRawTable
Running command...
Мне было бы интересно узнать, может ли кто-нибудь подтвердить, что это именно так и работает (проверка хранилища метаданных для каждого столбца), и если мне нужно просто спланировать накладные расходы на проверки хранилища метаданных.