Hive-2.1.1的安装
来源:互联网 发布:淘宝卖家页面生成器 编辑:程序博客网 时间:2024/05/17 20:22
hive我认为只需要在master 节点上安装就行了。
下载hive到/home/hadoop下来
wget http://archive.apache.org/dist/hive/hive-2.1.1/apache-hive-2.1.1-bin.tar.gz
1.解压apache-hive-2.1.1-bin.tar.gz
tar -xzvf apache-hive-2.1.1-bin.tar.gz
mv apache-hive-2.1.1-bin hive-2.1.1
这样hive就安装在/home/hadoop/hive-2.1.1目录下了。
2.配置hive
hive的配置文件在hive-2.1.1/conf和hive-2.1.1/bin目录下,需要配置如下文件:
hive-default.xml
hive-site.xml
hive-env.sh
配置hive-default.xml
这个只需要把hive-default.xml.template重命名成hive-default.xml即可
mv hive-default.xml.template hive-default.xml
配置hive-site.xml
hive-site.xml里的配置会覆盖掉hive-default.xml中的配置,这里主要有2处需要注意,一处是确定hive使用什么样的元数据库,一处是如果要想启动hive的web管理页面,需要配置hive的web端war包。
<configuration><property> <name>hive.exec.scratchdir</name> <value>/tmp/hive-${user.name}</value> <description>HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, an HDFS scratch dir: ${hive.exec.scratchdir}/<username> is created, with ${hive.scratch.dir.permission}.</description></property><property> <name>hive.exec.local.scratchdir</name> <value>/tmp/${user.name}</value><description>Local scratch space for Hive jobs</description></property><property> <name>hive.downloaded.resources.dir</name> <value>/tmp/hive/resources</value> <description>Temporary local directory for added resources in the remote file system.</description></property><property> <name>hive.querylog.location</name> <value>/tmp/${user.name}</value> <description>Location of Hive run time structured log file</description></property><property> <name>hive.server2.logging.operation.log.location</name> <value>/tmp/${user.name}/operation_logs</value> <description>Top level directory where operation logs are stored if logging functionality is enabled</description></property><property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://cetiti12:3306/hive?createDatabaseIfNotExist=true</value></property><property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value></property><property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value></property><property> <name>javax.jdo.option.ConnectionPassword</name> <value>hive</value></property></configuration>
配置hive-env.sh
mv hive-env.sh.template hive-env.sh
先从模版文件复制出hive-env.sh,再编辑hive-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_121
export HIVE_HOME=/home/hadoop/hive-2.1.1
export HADOOP_HOME=/home/hadoop/hadoop-2.7.3
export PATH=$JAVA_HOME/bin:$PATH:$HIVE_HOME/bin:$HADOOP_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$HIVE_HOME/lib:/home/hadoop/hbase-1.2.4/lib
export HIVE_CONF_DIR=$HIVE_HOME/conf
3.启动hive
先启动好hadoop,再启动HBase,如果不需要通过hive使用HBase,可以不启动HBase最后启动hive。hive的启动命令在hadoop/hive-2.1.1/bin目录下。启动hive时有几种不同的命令:
./hive 直接启动hive,进入到hive的命令行下,在命令行模式下进行hive操作
./hive -hiveconf hive.root.logger=DEBUG,console 带日志启动hive,还是在命令行模式下使用hive,但是会输出详细的信息,调试错误时非常有用
./hive –service hwi 带web接口启动hive,此时可以在浏览器打开hive的管理页面,前提是部署了hive-hwi-2.1.1.war。
./hive –service hiveserver 如果要在java代码里调用hive,必须这样启动
我用第二种方式启动,进入命令行
./hive -hiveconf hive.root.logger=DEBUG,console
启动成功后用jps查看,会看到一个RunJar进程。
如果启动多个hvie或者以多种方式启动hive,会看到相应数目的RunJar进程。
4.停止hive
在shell下直接输入quit命令
quit;
注意hive的命令结尾要加分号,和hbase不同。
这个时候再用jps命令就看不到RunJar进程了。
5.创建hive表
5.1外部表
创建外部表的时候hive只保存表的元数据,可以在hbase中先创建一个表,然后在hive里创建一个外部表来关联hbase中的表。现在我们先创建一个hbase的表。
进入到hbase的shell下执行:
create ‘member’,’id’,’address’
put ‘member’,’r1’,’id:address’,’dabaojiao’
要用hive关联hbase的表需要把hbase/lib和hadoop/share/hadoop/common/lib下的一些jar包拷贝到hive/lib目录下。
Hbase下的
hbase-client-1.2.4.jar,
hbase-server-1.2.4.jar,
hbase-common-1.2.4.jar,
hbase-protocol-1.2.4.jar,
htrace-core-3.1.0-incubating.jar
Hadoop2.7.3 的 /home/hadoop/hadoop-2.7.3/share/hadoop/common 目录下的
hadoop-common-2.7.3.jar
复制完后要重启hive。
进入hive的shell,关联hbase中的member表,注意此时hbase一定要启动哦。
在shell下输入
CREATE EXTERNAL TABLE hbase_member(key string, value string)
STORED BY ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler’
WITH SERDEPROPERTIES (“hbase.columns.mapping” = “id:address”)
TBLPROPERTIES(“hbase.table.name” = “member”);
如果不成功就用日志模式启动hive,会有详细的错误堆栈信息,关联hbase表时比较常见的异常是ClassNotFoundException和ClassNotFoundException。这是因为缺少了hadoop或者hbase的jar包,只要找到这些jar包拷贝到hive/lib目录下即可。
5.2内部表
hbase中没有创建表,直接在hive中创建内部表,间接在hbase中创建出表
create table hbase_table_1(key int, value string)
stored by ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler’
with serdeproperties (“hbase.columns.mapping” = “:key,cf1:val”)
tblproperties (“hbase.table.name” = “xyz”);
6.使用serde导入json到hive中:
实际使用时可能会有这样的场景,就是把json格式的文件数据导入到hive中,可以通过serde的方式,常见的有2种serde分别介绍下。
6.1通过hive-json-serde-0.2.jar(google code)导入:把hive-json-serde-0.2.jar拷贝到hive/lib下
执行建表
CREATE TABLE thxd
(
callType STRING,callMobile STRING,callTime STRING,callTimeCost STRING
)
ROW FORMAT SERDE ‘org.apache.hadoop.hive.contrib.serde2.JsonSerde’
STORED AS TEXTFILE;
再导入json文件
LOAD DATA LOCAL INPATH “/home/hadoop/thxd.txt” OVERWRITE INTO TABLE thxd;
注意1)thxd.txt是在linux文件系统上的,不是hdfs里,所以从local导入。也可以从hdfs里导入。
2)txhd.txt里并不是合法的json格式,如果改成合法的hive-json-serde-0.2.jar将无法工作。
7.2通过https://github.com/rcongiu/Hive-JSON-Serde 的serde
把json-serde-1.3-jar-with-dependencies.jar拷贝到hive/lib
CREATE TABLE complex_json (
DocId string,
User struct
Username:string, Name: string, ShippingAddress:struct Address2:string, City:string, State:string>, Orders:array OrderDate:string>>>
)
ROW FORMAT SERDE’org.openx.data.jsonserde.JsonSerDe’;
LOAD DATA LOCAL INPATH’/home/hadoop/test.json’ OVERWRITE INTO TABLE complex_json;
SELECT User.Orders FROM complex_json;
8.通过内置函数json_tuple和get_json_object导入json进入hive
由于get_json_object效率低下,官方推荐使用json_tuple
8.1通过json_tuple导入
8.1.1先建表:
CREATE TABLE thxd_json ( json string );
8.1.2导入数据(这个是标准的json格式文件,后缀名没关系,但格式要对。可在http://www.bejson.com/在线检查json格式)
LOAD DATA LOCAL INPATH ‘/home/hadoop/test.json’ INTO TABLE json_table;
8.1.3使用json_tuple查询
select v1.code, v1.errorDescription, v2.callMobile, v2.callTimeCost
from thxd_json jt
LATERAL VIEW json_tuple(jt.json,'code','errorDescription','dataObject') v1 as code, errorDescription, dataObject LATERAL VIEW json_tuple(v1.dataObject,'callMobile','callTimeCost') v2 as callMobile, callTimeCost;
- Hive-2.1.1的安装
- hive 2.1.1 安装
- Hive-2-Hive的安装
- hive-2.1.1安装部署
- Hive 2.1.1安装配置
- Hive 2.1.1安装配置
- hive 2.1.1 安装记录
- hive-2.1.1安装指南
- hive实战1---安装hive
- 【Hive】hive-2.1.1内嵌模式安装配置全过程
- 原生 Hive 1.2.1 的安装
- hive的安装
- hadoop hive的安装
- hive的安装
- Hive的安装
- 1003-Hive的安装
- hive的安装配置
- hive的安装
- java图片上传后台实现以及删除时删除目录
- GCC编译过程
- iOS开发之键盘样式
- Eclipse Class Decompiler——Java反编译插件的安装和使用
- python的josn.dump/dumps和load/loads
- Hive-2.1.1的安装
- HDU1164 Eddy's research I
- 51Nod-1174-区间中最大的数
- 1、SSL证书部署
- exec执行存储过程提示"违反主键约束"
- 关于设计方案
- Node.js ORM框架Sequlize之表间关系
- 滚动数组详解
- 属性 方法 构造器 20170726