hive使用总结,hive总结


从接触hive到今天也快一年了,把工作中的用到一些经验如下:

1)牢记一点hive只是一个基于hadoop的数据仓库工具,把sql转换成mapreduce,它的强项在于数据统计、方便灵活开发测试,对于复杂的etl逻辑建议用临时表分阶段去处理或者编写mapreduce程序处理。

2)关注hive sql是否造成数据倾斜。 解决数据倾斜的办法。了解你的数据分布如:是否某些key是其他key的多倍,或者关联的key为空等等。

3)稳定的调度系统非常重要。因为hive,tez运行的时候可能造成意外的错误,所以调度系统对已经上线的脚步自动重跑2,3遍就非常的好。

4)perl,python脚步运行hql尽量一个脚步运行一段hql,对于意外发生的错误追数方便很多。

5)尽量理解hql怎么转化成mapreduce的,有助于性能调优、排错等。


hive 分析结果导出到一个文本中

如果你想把查询的结果保存到linux系统上的某个文件中,可以执行这个HQL。
insert overwrite local directory '/tmp/output' select * from tablea;

这时查询的结果会被保存在HiveServer所在节点的的/tmp/output目录下。

如果你使用的Hive版本是0.11及以上,还可以指定列之间的分隔符,具体可以看这个问题单issues.apache.org/jira/browse/HIVE-3682
 

Hive是什?

此外,hive也支持熟悉map-reduce的开发者使用map-reduce程序对数据做更加复杂的分析。hive可以很好的结合thrift和控制分隔符,也支持用户自定义分隔符。hive基于hadoop,hadoop是批处理系统,不能保存低延迟,因此,hive的查询也不能保证低延迟。hive的工作模式是:提交一个任务,等到任务结束时被通知,而不是实时查询。相对应的是,类似于Oracle这样的系统当运行于小数据集的时候,响应非常快,可当处理的数据集非常大的时候,可能需要数小时。需要说明的是,hive即使在很小的数据集上运行,也可能需要数分钟才能完成。低延迟不是hive追求的首要目标。
 

相关内容

    暂无相关文章