hive安装指南
来源:互联网 发布:微擎 ecshop 数据同步 编辑:程序博客网 时间:2024/05/01 22:27
环境:centos6.5,hadoop2.5.2,habse1.0.3,sqoop1.4.3,apache-hive-1.2.1-bin.tar.gz
1.安装
将apache-hive-1.2.1-bin.tar.gz包放入/tmp进行解压
解压tar -xvzf apache-hive-1.2.1-bin.tar.gz
拷贝:cp -r apache-hive-1.2.1-bin /hadoop
重命名,进入到/hadoop
mv apache-hive-1.2.1-binhive
2.重命名配置文件
配置hive环境变量
配置hive环境变量,初始化hive在hdfs上的工作目录(因此在部署hive之前,请确保已经完整的部署了hadoop,并设置好相关的环境,hadoop版本是2.5.2,才和此hive版本相符)
vim ~/.bash_profile 添加以下内容
export HIVE_HOME=/hadoop/hive
exportPATH=$PATH:$HIVE_HOME/bin
export CLASSPATH=$CLASSPAHT:$HIVE_HOME/lib
source ~/.bash_profile
初始化hadoop 环境变量
hadoop fs -mkdir /tmp
hadoop fs -chmod g+w /tmp
hadoop fs -mkdir /user
hadoop fs -mkdir /user/hive
hadoop fs -mkdir /user/hive/warehouse
3.修改配置文件hive-env.sh,hive-site.xml,hive-config.sh
进入hive/conf目录
依据hive-env.sh.template,创建hive-env.sh文件
cp hive-env.sh.template hive-env.sh
修改hive-env.sh
HADOOP_HOME=/hadoop/hadoop
exportHIVE_CONF_DIR=/hadoop/hive/conf
配置hive-site.xml
cp hive-default.xml.templatehive-site.xml
mysql安装到192.168.72.149 创建hive用户以及hive数据库
hive.metastore.warehouse.dir hdfs 上的指定目录
hive.exec.scratchdir hdfs上的临时文件目录
主要配置数据库以及路径问题
<property>
<name>javax.jdo.OPTION.ConnectionURL</name>
<value> jdbc:mysql://192.168.72.149:3306/hive?characterEncoding=UTF-8 </value>
<description>JDBC connect string FOR a JDBCmetastore</description>
</property>
<property>
<name>javax.jdo.OPTION.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name FOR a JDBCmetastore</description> </property>
<property>
<name>javax.jdo.OPTION.ConnectionUserName</name>
<value>hive</value>
<description>username TOUSE against metastoredatabase</description>
</property>
<property>
<name>javax.jdo.OPTION.ConnectionPassword</name>
<value>hive</value>
<description>password TOUSE against metastoredatabase</description>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>/tmp/hive</value>
</property>
<property>
<name>hive.server2.logging.operation.log.location</name>
<value>/tmp/hive/operation_logs</value>
<description>Top level directory where operation logs are storedif logging functionality is enabled</description>
</property>
<property>
<name>hive.exec.local.scratchdir</name>
<value>/tmp/hive</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 theremote file system.</description>
</property>
配置hive的log4j: conf下 cphive-log4j.properties.template hive-log4j.properties
#log4j.appender.EventCounter=org.apache.hadoop.hive.shims.HiveEventCounter
log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter
启动hive
由于配置了系统变量 直接执行hive即可
hive
--service metastore &
ps
ax|grep
metastore
hive
--service hiveserver2 &
ps
ax|grep
HiveServer2
启动时候遇到错误:
[ERROR] Terminal initialization failed; fallingback to unsupported
java.lang.IncompatibleClassChangeError:Found class jline.Terminal, but interface was expected
atjline.TerminalFactory.create(TerminalFactory.java:101)
atjline.TerminalFactory.get(TerminalFactory.java:158)
atjline.console.ConsoleReader.<init>(ConsoleReader.java:229)
atjline.console.ConsoleReader.<init>(ConsoleReader.java:221)
atjline.console.ConsoleReader.<init>(ConsoleReader.java:209)
atorg.apache.hadoop.hive.cli.CliDriver.setupConsoleReader(CliDriver.java:787)
atorg.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:721)
atorg.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:681)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:621)
atsun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
atjava.lang.reflect.Method.invoke(Method.java:606)
atorg.apache.hadoop.util.RunJar.run(RunJar.java:221)
atorg.apache.hadoop.util.RunJar.main(RunJar.java:136)
发现是jline有问题,最后找到
需要将hive的jar替换掉hadoop内部的 执行
cp /hadoop/hive/lib/jline-2.12.jar/hadoop/hadoop/share/hadoop/yarn/lib/
记住需要将原hadoop的jline的jar删除
配置hive-config.sh
进入/hadoop/hive/bin
vim hive-config.sh
添加
export JAVA_HOME=/usr/java/jdk1.7.0_79
export HADOOP_HOME=/hadoop/hadoop/
export HIVE_HOME=/hadoop/hive
将mysql-connector-java-5.1.10.jar放入到/hadoop/hive/lib
数据测试:
hive> show tables;
在本地文件系统创建一个如下的文本文件:/tmp/student.txt
C01,N0101,82
C01,N0102,59
C01,N0103,65
C02,N0201,81
C02,N0202,82
C02,N0203,79
C03,N0301,56
C03,N0302,92
C03,N0306,72
创建一个hive的表
create table student(classNo string, stuNostring, score int) row format delimited fields terminated by ',';
将数据load到表中
load data local inpath '/tmp/student.txt'overwriteinto table student;
这个命令将student.txt文件内容加载到表student中。这个加载操作将直接把student.txt文件复制到hive的warehouse目录中,这个目录由hive.metastore.warehouse.dir配置项设置,默认值为/user/hive/warehouse。Overwrite选项将导致Hive事先删除student目录下所有的文件。
Hive不会对student.txt做任何格式处理,因为Hive本身并不强调数据的存储格式。
此例中,Hive将数据存储于HDFS系统中。当然,Hive也可以将数据存储于本地。
可以执行类似SQL的命令:
hive> select * from student;
UDF使用只能实现一进一出的操作
a)把程序打包放到目标机器上去;
b)进入hive客户端,添加jar包:hive>add jar /run/jar/udf_test.jar;
c)创建临时函数:hive>CREATE TEMPORARY FUNCTION add_example AS'hive.udf.Add';
d)查询HQL语句:
SELECT add_example(8, 9) FROM scores;
SELECT add_example(scores.math, scores.art) FROMscores;
SELECT add_example(6, 7, 8, 6.8) FROM scores;
e)销毁临时函数:hive> DROP TEMPORARY FUNCTION add_example;
5、细节在使用UDF的时候,会自动进行类型转换,例如:
SELECT add_example(8,9.1) FROM scores;
UDAF实现多进一出
a)将java文件编译成Avg_test.jar。
b)进入hive客户端添加jar包:
hive>add jar /run/jar/Avg_test.jar。
c)创建临时函数:
hive>create temporary function avg_test'hive.udaf.Avg';
d)查询语句:
hive>select avg_test(scores.math) fromscores;
e)销毁临时函数:
hive>drop temporary function avg_test;
UDTF(User-DefinedTable-Generating Functions) 用来解决输入一行输出多行(On-to-many maping)的需求
实现initialize, process, close三个方法UDTF首先会调用initialize方法,此方法返回UDTF的返回行的信息(返回个数,类型)。初始化完成后,会调用process方法,对传入的参数进行处理,可以通过forword()方法把结果返回。最后close()方法调用,对需要清理的方法进行清理
- hive安装指南
- HIVE 安装指南
- Hive安装指南
- Hadoop--Hive安装指南
- Hive 2.2安装指南
- Hadoop安装指南 / Hive安装指南
- Hive 0.12.0安装指南
- Hive 0.12.0安装指南
- Hive整合Hamza安装指南
- hive-2.1.1安装指南
- Hive 1.2.1&Spark&Sqoop安装指南
- hive指南
- hive指南
- 【Hive】Hive编程指南
- hive编程指南--hive基础知识
- Hive入门指南
- 读hive编程指南
- Hive-UDAF开发指南
- 机器学习主要算法总结
- Java String类中的replace方法替代冒号时的问题
- Ambiguous mapping. Cannot map 'XXXXXController' method
- mysql -- 索引总结
- 数学基本算法整理
- hive安装指南
- sqoop安装指南
- 类加载器的双亲委派及打破双亲委派
- 理工Oj 1341 Who will be punished
- HTTP详解
- OpenCV进阶之路:神经网络识别车牌字符
- c# 写的一个xml配置工具,自我感觉很强大(wpf)
- 使用深度学习打造智能聊天机器人
- Div仿框架方法详解