用于排序性能的配置单元优化

az31mfrm  于 2021-06-02  发布在  Hadoop
关注(0)|答案(0)|浏览(284)

我创建了一个非常简单的配置单元表:

CREATE EXTERNAL TABLE input_data (
    key string,
    value string
  )
  ROW FORMAT DELIMITED
  FIELDS TERMINATED BY '\t'
  LINES TERMINATED BY '\n'
  STORED AS TEXTFILE
  LOCATION 's3://bucket/input/';

现在从上表中,我想在s3中生成一个文件,其中所有记录按键排序,如下所示:

CREATE EXTERNAL TABLE sorted (
    key string,
    value string
  )
  ROW FORMAT DELIMITED
  FIELDS TERMINATED BY '\t'
  STORED AS TEXTFILE
  LOCATION 's3://bucket/output/';

  SET hive.exec.reducers.max=1;
  SET mapred.reduce.tasks=1;

  INSERT OVERWRITE TABLE sorted
    SELECT * FROM input_data
    ORDER BY input_data.key;

我的问题是,我可以探索哪些配置单元优化来查看排序是否可以更快?目前,要对一个有5000万行的输入表进行排序,在一个集群上大约需要1小时20分钟,其中每个主机有64 gb ram、32个CPU和640 gb ssd。当然,因为我强制单个reducer生成单个文件,所以在insert查询的reduce阶段只使用一个主机。
我的密钥基本上是60-75个字符左右的任意字符串,还有很多20个字符左右的通用前缀(如果相关的话)。
我使用的是运行在tez 0.8.4(aws emr release label 5.3.0)上的hive2.1.1
有什么建议吗?

暂无答案!

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

相关问题