Hive
Hive是基于hadoop的关系型分佈式数据块,提供通用的SQL语句,稳定性好。
1.安装
首先按照CentOS安装好jdk,安装Hadoop install安装好Hadoop,hive安装路径为:
hadoop /usr/local/hadoop
jdk /usr/java/latest
hive /usr/local/hive
然后到Hive下载hive安装包hive-0.9.0.tar.gz
。
以root身份创建目录:
su - root
mkdir /usr/local/hive
chown hadoop:hadoop /usr/local/hive/
然后以hadoop身份安装hive:
su - hadoop
tar zxvf hive-0.9.0.tar.gz
cd hive-0.9.0
mv * /usr/local/hive/
然后配置bin/hive-config.sh
,在文件尾部加入:
export JAVA_HOME=/usr/java/latest
export HIVE_HOME=/usr/local/hive
export HADOOP_HOME=/usr/local/hadoop
然后复制一份hive-site.xml
,使用默认配置即可:
mv conf/hive-default.xml.template conf/hive-site.xml
最后将hive的lib下的jar包复制一份到hadoop/lib下:
cp /usr/local/hive/lib/* -R /usr/local/hadoop/lib/
2.运行
输入/usr/local/hive/bin/hive
启动hive命令行,简单输入一些命令:
CREATE TABLE student(id INT, name string);
DESC student;
注意hive不支持单条insert数据,hive支持LOAD DATA
命令从本地文件或hdfs上文件导入到表中,但这些文件每行必须用换行符分隔,每列必须用ctrl-a符号(‘\001’)隔开,这个符号不太好输入,而且有些数据是自定义分隔符的,可以採用下面这种方式建表:
首先编辑文件stu.txt
,并放到hdfs的/user/hadoop/student/
目录下:
1 tom
2 john
3 nick
hadoop fs -mkdir /user/hadoop/student/
hadoop fs -copyFromLocal stu.txt /user/hadoop/student/
CREATE external TABLE student2(id INT, name string)
ROW format delimited
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
stored AS textfile
location '/user/hadoop/student/';
注意创建的location必须是一个目录,hive会把这个目录下的所有文件作爲数据文件看待,对这个目录增删修改文件都可以直接在查询中反映出来,然后就可以查询表的内容:
SELECT * FROM student2; -- 应该可以看到3条表纪录
将一个表複製到另外一个表中:
INSERT INTO TABLE student SELECT id,name FROM student2; -- 注意INSERT TABLE无法选择列
将select出来的结果存放到hdfs中:
INSERT OVERWRITE DIRECTORY '/tmp/student2' SELECT id,name FROM student2;
这样就可以在hdfs的/tmp/student2/
中看到输出的文件。
更多SQL用法详见GettingStarted。