如何在hive中对分区的倾斜数据集进行排序

0ejtzxu1  于 2021-05-29  发布在  Hadoop
关注(0)|答案(0)|浏览(277)

我有一个低于hive继承权的数据集,数据集的大小以tb为单位。

-Country
   -Year
   -In_stock
   -Zone
      -trans_dt

我需要在区域内按升序对事务进行排序(其中一个区域占数据集的80%),这是对数据集进行排序的最有效的方法。我一共有10个国家,每个国家有大约100个区域。一旦trans\u dt被排序,我需要对collect\u集执行操作,因此排序在我的例子中非常重要。
我试着按年份划分数据集,然后在trans\u dt desc上应用cluster by,但排序似乎没有按预期工作。

CREATE TABLE TEST.TABLENAME STORED AS ORC AS
(
COUNTRY INT,
YEAR STRING,
In_stock INT,
ZONE STRING,
TRANS_DT STRING,
|
|
MORE COLUMNS
)
FROM SOURCETABLE PARTITION BY (YEAR,IN_STOCK)

INSERT OVERWRITE TABLE TEST.TABLENAME PARTITION(YEAR, IN_STOCK)
SELECT
|
|
FROM SOURCETABLE CLUSTER BY trans_dt;

SELECT
a.country,
a.zone,
collect_set(a.prod_id) AS prod_seq
count(*) as count
FROM SOURCETABLE WHERE IN_STCK=1
GROUP BY
a.country,
a.zone
;

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题