стол в улье с обменом и сортировкой в ​​физическом плане - PullRequest
1 голос
/ 12 июня 2019

У меня две таблицы сгруппированы по одним и тем же столбцам, но при объединении обеих таблиц по кластеризованным столбцам план выполнения показывает этапы обмена и сортировки.

Обе таблицы объединены в один и тот же столбец (key_column),Обе таблицы сжаты или сжаты, а таблица A разбита на разделы и сгруппирована, а таблица B сгруппирована в одну и ту же колонку.

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

Я даже пробовал с нижеуказанными свойствами улья:

spark.sql('set spark.sql.orc.filterPushdown=true')
spark.sql('set hive.optimize.bucketmapjoin = true')
spark.sql('set hive.optimize.bucketmapjoin.sortedmerge = true')
spark.sql('set hive.input.format=org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat')
spark.sql('set hive.optimize.bucketmapjoin = true')
spark.sql('set hive.stats.autogather=true')
spark.sql('set hive.compute.query.using.stats=true')
spark.sql('set hive.optimize.index.filter=true')

also collected stats for the tables:

И Сортировка, и обмен можно увидеть в физическом плане, но таблицы с ульями в кустах должны были избегать сортировки ишаг обмена

 [count#1311L])
          +- *Project
             +- *SortMergeJoin [key_column#1079], [key_column#1218],Inner
sort step:                :- *Sort [key_column#1079 ASC NULLS FIRST], false, 0
    exchange step:            :  +- Exchange hashpartitioning(key_column#1079, 200)
                :     +- *Filter isnotnull(key_column#1079)

Ожидаемый результат: НЕТ СОРТИРОВКИ И ОБМЕНА

    [count#1311L])
              +- *Project
                 +- *SortMergeJoin [key_column#1079], [key_column#1218], Inner
                    :     +- *Filter isnotnull(key_column#1079)`enter code here`

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

1 Ответ

0 голосов
/ 14 июня 2019

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

Проектная документация из открытого исходного кода, детализирующая различия между группами Hive и Spark: https://docs.google.com/document/d/1a8IDh23RAkrkg9YYAeO51F4aGO8-xAlupKwdshve2fc/edit#heading=h.fbzz4lt51r0

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