对大量数据进行查询时,Hive在查询时,会转换成mapreduce任务运行,会显得比较慢。可以通过分区来进行速度上的优化。
ganglia导致的centos异常记录
python写入Hbase超时问题分析
Hbase是一个高可靠、高性能、面向列、可伸缩的分布式数据库。其底层的LSM数据结构和RowKey有序排列等架构上的独特设计,使得hbase具有非常高的写入性能。但是在实际使用中,由于对hbase的写入方面的机制没有深入的了解,无法有效发挥出hbase的写入性能。本文主要记录了在刚开始使用hbase时,对hbase没有太多的了解的基础上,在写入方面遇到的一个问题和解决方法。
Hive基本使用
基本使用
1、将trans数据导入hdfs
2、shell中使用hive
库名不能用-符号
|
|
表名不能用数字开头
加载数据进表
统计一下总共有多少行数据
然后用wc -l
统计一下原始文件为472755103,发现少了一行,wc -l
是按\n作为行结束符统计行数,所以最后一行如果没有\n的话会统计丢失,一次少了一行
导入Trans数据
要导入数据,首先需要在hive中建立一个表,用于存储数据的一些元信息,便于查询。
数据格式如下:
1、创建数据表trans.trans201702
2、修改字段名:
3、导入数据到trans.test201702
4、删除表:
查询操作
Hive的sql语句与sql类似,只要熟悉sql语句,基本上就能使用Hive就能查询出想要的数据。
1、查询股票代码
2、将查询的数据导出
生成的文件数 和redurcer的数目的一样的。
上面的文件需要进行合并才能看,不方便,可以通过直接导出查询结果到本地
3、Python 异步实现方式
hive streaming
Hive streaming提供了类似unix管道的功能,将查询的数据,直接传给其它的脚本处理,并且支持多种语言如python,java
编辑streaming.py
在hive中执行,加入自己定义的脚本
然后执行:
输出
Python使用hive
Hive基于thirft框架,提供一套外部调用的接口,支持java,python等程序调用。首先启动HiveServer2服务
环境准备
需要安装的包为thrift_sasl,sasl,pythive,impyle
安装sasl
将下面的包全装上
PyHive使用
pyhive是dropbox开源的python连接hive的库,并且支持异步。
pyhs2使用
出现此问题时由于用户密码设置不对
HiveServer2默认权限没有开起
authMechanism设置为NOSASL
之后又爆出以下问题,暂时问题不明
pyhs2已经于2016年1月份停止更新,bug较多
impyla
cloudera的impyla,bug多,没有试成功
`
hive版本切换
由于安装的hive版本偏高,在使用的时候存在python连接的许多问题,现切换成hive1.2版,安装和hive2.1一样,配置也一样不需要更改。
Hive2虽然也是一个稳定的版本(2016年12发布),但是其刚出来不久,许多的配套的库并没有及时的更新用来支持,例如pyhs2在2016年1月停止更新,impyla也停止更新接近1年等,出现的问题很难找到答案。但是在版本的选择上还是需要尝试,知道存在的问题。后续将采用PyHive来作为Python连接Hive的包。