Сбор статистики по столбцам Hive в Apache Spark - PullRequest
0 голосов
/ 23 октября 2018

Я использую Pyspark 2.1 для вычисления статистики таблиц и столбцов из таблиц улья.

Когда я делаю:

spark.sql("ANALYZE TABLE <table name> COMPUTES STATISTICS")

Я могу собирать статистику с DESCRIBE EXTENDEDКоманда SQL:

spark.sql("DESCRIBE EXTENDED <table name>").show()

Однако при вычислении статистики столбцов, например, так:

spark.sql("ANALYZE TABLE <table name> COMPUTES STATISTICS FOR COLUMNS")

Задание отправлено и успешно выполнено, но я не могу собрать статистику с помощью команды SQLв соответствии с рекомендациями этого ответа :

spark.sql("DESCRIBE EXTENDED <table name> <column name>").show()

Я получаю:

ParseException Неподдерживаемый оператор SQL

Повторное выдача того же DESCRIBE EXTENDED запрос (без имени столбца) не возвращает никаких изменений в CatalogTable: я вижу только статистику таблицы (то есть sizeInBytes и rowCount).

Этот другой ответ предлагает получитьСтатистика Spark из «таблицы» в metastore, но для меня это загадочно ...

Как мне получить доступ к статистике на уровне столбцов в Spark?


Редактировать: Iисследовали это дальше, что позволяет мне уточнитьмой вопрос:

Похоже, мой клиент Hive (Hive View 2.0) и Spark SQL не записывают статистику в одном месте.

  • При использовании Spark SQL ANALYZE TABLE метод, статистика только по таблице отображается в ключе Статистика в CatalogTable:

     Statistics: sizeInBytes=15196959528, rowCount=39763901, isBroadcastable=false
    

Однако Hive View не учитывает эту статистику,которые не перечислены в моей статистике таблиц

  • И наоборот, при вычислении статистики таблиц или столбцов в представлении Hive я могу собирать статистику таблиц с помощью метода Spark SQL DESCRIBE EXTENDED, но они появляются в Свойства ключ моего каталога.Это также указывает, были ли вычислены некоторые статистические данные столбца:

    Properties: [numFiles=20, transient_lastDdlTime=1540381765, totalSize=15196959528, COLUMN_STATS_ACCURATE={"COLUMN_STATS":{"bubble_level":"true","bubble_level_n1s":"true","timestamp":"true"}}]
    

Таким образом, эти фрагменты информации кажутся независимыми, и тогда возникает вопрос: какой фрагмент может использоваться Spark дляоптимизировать план выполнения?Я понимаю, что некоторые из этих вопросов можно решить путем обновления до последней версии Spark, но на данный момент это не входит в мое расписание.

Вышеупомянутый ответ Яцека Ласковского предлагаетСтатистику Hive можно использовать, если она доступна с помощью метода Spark SQL DESCRIBE EXTENDED.

Кто-нибудь может подтвердить это?

Заранее большое спасибо за помощь в прояснении этого вопроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...