2016-09-22 1 views
4

Для повышения производительности (например, для объединений) рекомендуется сначала вычислить статическую таблицу.Содержит ли статистика вычислительных таблиц в улье или импале ускоряет искру apache?

В улье я могу сделать ::

analyze table <table name> compute statistics; 

В Impala:

compute stats <table name>; 

ли моя искра приложения (чтение из улья таблиц) также извлекают выгоду из предварительно вычисленных статистики? Если да, то какой из них мне нужно запустить? Сохраняют ли они статистику в метафоре улья? Я использую искру 1.6.1 на 5.5.4 Cloudera

Примечание: В Документах искровых 1.6.1 (https://spark.apache.org/docs/1.6.1/sql-programming-guide.html) для параметра spark.sql.autoBroadcastJoinThreshold я нашел подсказку:

Обратите внимание, что в настоящее время статистика поддерживаются только для таблиц Hive Metastore , в которых запущена команда ANALYZE TABLE COMPUTE STATISTICS noscan.

ответ

0

Из того, что я понимаю, вычислительная статистика на импале является последней версией и освобождает вас от настройки настроек улья.

Из официального дока:

Если вы используете методы улей на основе статистики сбора, см улой вики для получения информации о требуемой конфигурации на стороны ульи. Cloudera рекомендует использовать оператор Impala COMPUTE STATS для , чтобы избежать возможных проблем с конфигурацией и масштабируемостью с помощью процесса сбора статистики .

Если запустить Улое заявление ПРОАНАЛИЗИРУЙТЕ ТАБЛИЦУ COMPUTE СТАТИСТИКУ ДЛЯ КОЛОННЫ, Impala можно использовать только результирующую статистику столбца, если таблица неразмеченная. Impala не может использовать Hive-generated столбец статистика для секционированной таблицы.

Полезная ссылка: https://www.cloudera.com/documentation/enterprise/5-5-x/topics/impala_perf_stats.html

1

Я предполагаю, что вы используете улей на Спарк (или) Спарк-Sql с улья контекстом. Если это так, вы должны запустить анализ в улье.

Анализ таблицы < ...> обычно должен запускаться после создания таблицы или при наличии значительных вставок/изменений. Вы можете сделать это в конце самого этапа загрузки, если это MR или искровое задание.

Во время анализа, если вы используете улей на искру - пожалуйста, также используйте конфигурации в приведенной ниже ссылке. Вы можете установить это на уровне сеанса для каждого запроса. Я использовал параметры в этой ссылке https://cwiki.apache.org/confluence/display/Hive/Hive+on+Spark%3A+Getting+Started в производстве, и он отлично работает.

0

Это предстоящий Spark 2.3.0 (возможно, некоторые из функций уже выпущены в версии 2.2.1 или ealier).

Является ли мое искрообразование (чтение из таблицы улей) также полезной информацией из предварительно вычисленной статистики?

Он мог бы, если Impala или улей записал таблицу статистику (например, размер таблицы или количество строк) в metastore улей в метаданных таблицы, Спарк может считывать из (и перевода его собственная статистика искры для планирования запросов).

Вы можете легко проверить это с помощью команды DESCRIBE EXTENDED SQL в spark-shell.

scala> spark.version 
res0: String = 2.4.0-SNAPSHOT 

scala> sql("DESC EXTENDED t1 id").show 
+--------------+----------+ 
|info_name  |info_value| 
+--------------+----------+ 
|col_name  |id  | 
|data_type  |int  | 
|comment  |NULL  | 
|min   |0   | 
|max   |1   | 
|num_nulls  |0   | 
|distinct_count|2   | 
|avg_col_len |4   | 
|max_col_len |4   | 
|histogram  |NULL  | 
+--------------+----------+ 

ANALYZE TABLE COMPUTE STATISTICS noscan вычисляет одну статистическую величину, которая использует Спарк, то есть общий размер таблицы (без строки рассчитывать метрики из-за noscan опции). Если Impala и Hive записали его в «правильное» место, Spark SQL покажет его в DESC EXTENDED.

Используйте DESC EXTENDED tableName для статистики на уровне стола и посмотрите, найдете ли вы те, которые были созданы Impala или Hive. Если они находятся в выводе DESC EXTENDED, они будут использоваться для оптимизации объединений (и с оптимизацией затрат, включенной также для агрегаций и фильтров).


статистики столбцов сохраняются (в искрового конкретных сериализованном формате) в свойствах таблицы, и я очень сомневаюсь, что Impala или улей может вычислять статистику и хранить их в Спарк SQL-совместимый формат.

Смежные вопросы