sql - 有没有办法识别或检测 Hive 表中的数据倾斜?

标签 sql performance hadoop hive skew

我们有许多 Hive 查询,需要花费大量时间。我们正在使用 tez 和其他良好实践,例如 CBO、使用 orc 文件等。

有没有办法像某些命令一样检查/分析数据偏差?解释计划是否有帮助?如果有,我应该寻找哪个参数?

最佳答案

解释计划对此没有帮助,您应该检查数据。如果是联接,则从参与联接的所有表中选择前 100 个联接键值,如果是分析函数,则对按键分区执行相同操作,您将看到是否存在倾斜。

示例:

select key, count(*) cnt
   from table
  group by key
 having count(*)> 1000 --check also >1 for tables where it should not be duplication (like dimentions)
  order by cnt desc limit 100;

key 可以是复杂的连接键(在连接 ON 条件下使用的所有列)。

另请看看这个答案:https://stackoverflow.com/a/51061613/2700344

关于sql - 有没有办法识别或检测 Hive 表中的数据倾斜?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53332761/

相关文章:

java - 什么更有效率?使用 Regex 或在 mysql 中创建新列以获取相同信息

c++ - 如果我针对大小而不是速度进行优化,为什么 GCC 生成的代码速度会快 15-20%?

python - 从CLI配置EMR Hadoop Yarn

mysql - 获取每组分组 SQL 结果中最大值的记录

c++ - 我怎样才能使 cout 更快?

hadoop - java.lang.IncompatibleClassChangeError : Found interface org. apache.hadoop.mapreduce.JobContext,但类是预期的安装示例

hadoop - 如何在hadoop中添加另一个文件系统

sql - 聚合函数按顺序获取两行的差异或比率

Java JDBC 问题,第 1 行不包含所有列的数据

SQL 存储过程 : Reordering rows after delete