初用hadoop体系中的hive和hbase。在hive中建了一个外部表,指定的是hbase的某一张表。数据量差不多有3亿左右
在用insert overwrite table 时报了如下的错误:
上面报错原因是因为数据量太大,网上说什么mapreduce的任务内存溢出了。由于我的没有看到yarn的日志
正常的排查流程为应该查看yarn日志出现问题,由于我也是刚接触,不知道在服务器哪里查看yarn日志。
后来把语句拆入末尾加上distribute by xx; 加上任意一个字段再次执行成功插入。
hive中的distribute by是控制在map端如何拆分数据给reduce端的。
hive会根据distribute by后面列,根据reduce的个数进行数据分发,默认是采用hash算法。
我理解其实是把数据打散,批次分发给reduce端的。