我有一个包含 30 亿行的 HIVE 表。想要根据“金额”列的降序分配序列 ID。逻辑如下:
with table_of_3_billion_row(amount) as (
VALUES ( 10.01 ), ( 1.25 ), ( 9.35 ), ( 8.64 ), ( 2.87 ), ( 4.13 ), ( 6.15 ), ( 5.66 )
)
select
row_number() over(order by amount desc) id,
amount
from table_of_3_billion_row
预期输出:
id amount
1 10.01
2 9.35
3 8.64
4 6.15
5 5.66
6 4.13
7 2.87
8 1.25
sparksql 作业卡住或花费很长时间。有什么建议分配 Spark 资源来微调此查询吗?
考虑到行数很大,您需要在 Spark 配置中执行以下操作。
首先我会尝试使用一百万个数据,然后添加另外一百万个
spark.sql.shuffle.partitions=5000
spark.sql.files.maxPartitionBytes=256m
spark.executor.memory=16g
spark.executor.memoryOverhead=4g
spark.executor.cores=4
spark.executor.instances=50