作者:empty 出版社:empty |
1Hive使用入门:
主要流程为:
1.运行putty等ssh客户端连接hive服务器;
2.运行hive命令进入hive shell环境;
3.执行HQL语句进行查询;
本流程中以putty为例,如果使用别的SSH客户端,界面上会不同,基本过程相似。
我们当前使用的hive版本为 0.9.0。由于hive本身还在不断开发、升级中,不同版本的hive对各种语句、命令行参数等的支持均不同,请大家注意某个特性从哪一个版本开始支持。Hive官方网站上的教材中有些命令需要到0.10.0等更高版本才支持!
1.1安装ssh 客户端 Putty
软件位置:
cn1 ctrip 商业智能部 部门公用 SoftWare putty.zip
解压所可以得到文件
Puttyssh客户端
1.2登录安装hive的机器
1.2.1运行putty
输入 ip地址 192.168.83.96 和 端口号信息 1022 ,如下图:
注: 一般默认的SSH端口是22,此处必须修改!
1.2.2登录linux
单击open按钮,按提示输入用户名,并回车,然后按提示输入密码,并回车,例如:
用户名为ppj密码为HgeeGxR5
提示:可选中复制到剪贴板后,用鼠标右键粘贴
如果用户名、密码正确,则登录成功,顺利进入linux 的bash环境。
注:此环境类似于运行windows的cmd进入的dos环境。
1.2.3 输入hive,进入hive 的shell 环境:
1.2.4查询
执行如下查询语句:
Use test_wqd;
Select * from pageview limit 5;
屏幕输出即为查询语句的结果。
注意: hive的查询语句以分号作为各条命令的分隔符,结尾的分号不能省略。这一点和SQL Server的T-SQL差异比较大!
2Hive简介:
Hive shell环境和mysql的客户端比较相似,而且hive的某些语法与mysql比较相似,例如: show databases, show tables, desc 等。
Hive支持两种模式:交互模式和批模式。
2.1Hive命令行参数
-e quoted-query-string>执行所指定查询字符串,并退出,与mysql的-e类似。
-f filename> 执行指定的文件中内容并退出。
-H,--help 显示帮助-S,--silent安静模式,不输出hive提示符等
2.2Hive交互模式
下面简单介绍一下hive交互模式下可以运行的常用命令:
quit退出hive交互式shell
exit与quit相同
source读入hQL文件并执行查询,与mysql的source命令相似。
Set打印所有配置变量信息
Set key>= value>设置特定配置变量key的值为value。
注:如果拼写错误,将不会报错。
Set –v打印hadoop和hive相关配置变量信息
!执行外部的shell命令,例如:
!date; 显示当前系统时间
2.3批处理模式
-e或者-f参数
例1:
hive -e use ubt; select * from s_ubt_pageview where d='2013-04-01' limit 100;
例2:
假设query.sql文件的内容:
use ubt;
select * from s_ubt_pageview where d=’2013-04-01’;
则
hive –f query.sql
2.4配置文件
此部分为高级功能。
在账户的home目录下有个.hiverc文件,可以配置hive的一些参数,例如:
set hive.cli.print.current.db=true;#在命令行中显示当前数据库名
set hive.exec.compress.intermediate=true;#压缩hive的中间结果
set mapred.map.output.compression.codec=org.apache.hadoop.io.compress.BZip2Codec; #对map输出端内容使用BZip2 编码/解码器
set hive.exec.compress.output=true; #压缩hive输出
set mapred.output.compression.codec=org.apache.hadoop.io.compress.BZip2Codec; #对hive中的MR输出内容使用BZip2 编码/解码器
set mapred.reduce.tasks=7;#设置mapreduce中reduce数目为7
2.5将查询结果导出为文件
2.5.1方法1:INSERT
采用 INSERT OVERWRITE LOCAL DIRECTORY 方法。
例如:
在hive shell中执行查询语句:
use ubt;
INSERT OVERWRITE LOCAL DIRECTORY '/home/ppj/pageview'
select * from s_ubt_pageview where d='2013-04-01' limit 100;
则会在/home/ppj目录下自动创建pageview子目录,浏览目录,发现有如下文件:
ls -al pageview/
其中:
主要的内容在000000_0中。
而.00000_0.crc为linux下的隐藏文件,只保存对应文件000000_0的CRC校验和,可忽略之。
000000_0文件的格式为【与hive建表语句中指定的行、列、复杂类型的分隔符有关】。默认如下:
n文本文件中记录与记录之间的分隔符
For text files, each line is a record, so the line feed character separates records.
^ACtrl+A,也就是 001,列和列之间的分隔符
Separates all fields (columns). Written using the octal code 001 when explicitly specified in CREATE TABLE statements.
^BSeparate the elements in an ARRAY or STRUCT, or the key-value pairs in a MAP. Written using the octal code 002 when explicitly specified in CREATE TABLE statements.
^CSeparate the key from the corresponding value in MAP key-value pairs. Written using the octal code 003 when explicitly specified in CREATE TABLE statements.
2.5.2方法2:查询结果重定向
Linux支持标准输出和标准错误的重定向,可以把原先输出到标准输出流的内容重定向到文件。默认情况下,hive的查询结果输出内容以 t作为分隔符。
以上述query.sql为例:
hive -f query.sql > query.tsv
查看query.tsv的内容,发现头部为:
注意:头部多了一行,即标题行。如果某列中本身有 t,需要在查询语句中特殊处理。
3使用SFTP工具下载文件
如果文件比较大,则建议在linux下用gzip命令先进行压缩,再下载,输入如下命令即可压缩:
gzip 000000_0
则压缩后的文件为
000000_0.gz
推荐使用winscp通过sftp协议下载文件。
3.1安装WinSCP
软件安装包的目录在
cn1 ctrip 商业智能部 部门公用 SoftWare winscp514setup.zip
解压缩出来就是WinSCP的安装程序
3.2下载文件
3.2.1新建连接
单击“新建”按钮,进入新建对话框:
3.2.2登录
输入
ip地址 192.168.83.96
端口号信息 1022
用户名、密码:
如果配置正确,则可以进入类似于window explorer的图形界面。
3.2.3下载文件
在左边窗口可以设置本地的当前目录,而右边窗口则可以设置主机的当前目录。
采用类似拖拽操作,即可以从SSH服务器下载至本地。