列表

详情


某Bl系统构建在大数据计算服务MaxCompute上,某数据分析员在分析订单的地域分布时,需要把订单表order(占用存储空间约10G)与地域维表region(占用存储空间100M)关联起来,两张表的结构如下:create table order(order_id string,region_id string,order amt bigint);create table region(region_id string,region_name string)在运行时发现由于订单大量集中在上海地区,数据的倾斜导致整体运行时间较长,运行的SQL语句如下:select region_name,sum(order_amt) amt from order t1 join region t2 on t1.region_id =t2.region_id;此时可以考虑通过优化SQL的运行效率。

A. 使用mapjoin hint: select/* +mapjoin(t2)* /region_name,sum(order_amt)amt from order t1 join region t2 on t1.region_id=t2.region_id;

B. 使用mapjoin hint: select/* +mapjoin(t1)*/region_name,sum(order_amt)amt from order t1 join region t2 on t1.region_id=t2.region_id;

C. 调整两张表的位置: select region_name, sum(order_amt) amt from region t1 join t2 on t1.region_id=t2.region_id;

D. 减小SQL的splitsize,增加计算资源

参考答案: A

详细解析:

:正确答案A A、使用Mapjoin小表放内存里可以提高运行速率 B、Mapjoin应该把小表放内存,B把大表放内存不符合 C、调换位置不影响计算速度 D、数据倾斜问题时减少splitsize不能解决的

上一题