hadoop - hive 中的 reducer 选择

标签 hadoop hive hiveql reduce hadoop-partitioning

我有以下记录集要处理

 1000, 1001, 1002 to 1999,
 2000, 2001, 2002 to 2999,
 3000, 3001, 3002 to 3999

我想使用HIVE处理以下记录集,以便reducer-1将处理1000至1999的数据,reduce-2将处理2000至2999的数据,reducer-3将处理3000至3999的数据。请帮助我解决以上问题。

最佳答案

使用DISTRIBUTE BY,映射器的输出将根据distribution by子句进行分组,以传输到reduce进行处理:

select ...
  from ...
distribute by case when col between 1000 and 1999 then 1
                   when col between 2000 and 2999 then 2
                   when col between 3000 and 3999 then 3
               end

或者简单地
distribute by floor(col/1000)

关于hadoop - hive 中的 reducer 选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59882425/

相关文章:

hadoop Namenode 无法启动

hadoop - 您可以从配置单元数据库切换到另一个配置单元数据库吗?

hadoop - 通过 Kylin build cube 创建 hive 表时出错

hadoop - 解析配置单元查询时出现NoViableAltException(281 @ [])异常

r - 在 rhdfs 中的 hdfs.init() 中出现错误

hadoop - 配置单元:固定的日志结构和每日分析

mysql - 无法运行 Hive 子查询

hadoop - 将配置单元分区映射到某个位置

sql - 如何计算 hive 之间的月份?

python - 在 hadoop 上的一个流作业中使用多个映射器输入?