2016-06-13 2 views
0

Я выполнил запрос с подключением SMB и без него и получил разные результаты. Пожалуйста, помогите объяснить.Карта контейнера для сортировки слияния (карта SMB) Присоединиться

SET hive.enforce.bucketing=true; 

create table dbaproceduresbuckets (
owner   string , 
object_name  string , 
procedure_name string , 
object_id  double , 
subprogram_id double , 
overload  string , 
object_type  string , 
aggregate  string , 
pipelined  string , 
impltypeowner string , 
impltypename string , 
parallel  string , 
interface  string , 
deterministic string , 
authid   string) 
CLUSTERED BY (object_id) SORTED BY (OBJECT_ID ASC) INTO 32 BUCKETS; 

CREATE TABLE dbaobjectsbuckets1(
owner   string, 
object_name  string, 
subobject_name string, 
object_id  double, 
data_object_id double, 
object_type  string, 
created   string, 
last_ddl_time string, 
timestamp  string, 
status   string, 
temporary  string, 
generated  string, 
secondary  string, 
namespace  double, 
edition_name  string) CLUSTERED BY (object_id) SORTED BY (OBJECT_ID ASC) INTO 32 BUCKETS; 

**** load the table; 

0: JDBC: hive2: // XXXXXX: 10000> выберите отсчет (*) от dbaobjectsbuckets1 а, б dbaproceduresbuckets 0: hive2: JDBC: // XXXXXXXX: 10000>, где a.object_id = Ь. object_id; INFO: информация о работе Hadoop для Stage-2: количество карт: 3; количество редукторов: 1 INFO: 2016-06-13 15: 56: 00,381 Карта Stage-2 = 0%, уменьшение = 0% INFO: 2016-06-13 15: 56: 55,818 Карта Stage-2 = 1% , уменьшение = 0%, кумулятивный CPU 122,6 с INFO: 2016-06-13 15: 57: 47,124 Карта Stage-2 = 7%, уменьшение = 0%, Накопительный CPU 326,86 с ......... INFO: 2016-06-13 16: 05: 01,246 Карта Stage-2 = 100%, уменьшение = 100%, кумулятивный процессор 867,1 с INFO: MapReduce Общее суммарное время процессора: 14 минут 27 секунд 100 мс INFO: Закончено Job = job_1464280256859_0146 + -------- + - + | _c0 | + -------- + - + | 54876 | + -------- + - +

**** 
set hive.auto.convert.sortmerge.join=true; 
set hive.optimize.bucketmapjoin=true; 
set hive.optimize.bucketmapjoin.sortedmerge=true; 
set hive.auto.convert.sortmerge.join.noconditionaltask=true; 
set hive.enforce.bucketing=true; 
set hive.enforce.sorting=true; 

0: jdbc:hive2://xxxxxxx:10000> select count(*) from dbaobjectsbuckets1 a, dbaproceduresbuckets b 

0: JDBC: hive2: // XXXXXXXX: 10000> где a.object_id = b.object_id;

in the execution plan, I am seeing 

| Сортированная карта слияния ковша Присоединиться к оператору | | карта состояния: | | Inner Join 0 to 1 | | ключи: | | 0 object_id (тип: double) | | 1 object_id (тип двойной)

**** but the result is showing 
INFO : Hadoop job information for Stage-1: number of mappers: 32; number of reducers: 1 
    ...... 
INFO : MapReduce Total cumulative CPU time: 4 minutes 8 seconds 490 msec 

INFO: Закончен Работа = job_1464280256859_0150 + ------ + - + | _c0 | + ------ + - + | 2 | + ------ + - +

????? Мой вопрос, почему он только получил 2, когда я использовал SMB присоединиться ?????? Предполагается, что это будет 54876.

Спасибо!

ответ

1

использовать сортировку по статье при вставке данных в таблицу отсортированного

или

set hive.enforce.sorting=true 

перед вставкой данных в таблицу отсортированного

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