hive安装及配置
1.下载地址: http://www.apache.org/dyn/closer.cgi/hive/
2.解压
3.hive配置
1.修改hive-env.sh,添加如下信息
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.6.5 export JAVA_HOME=/usr/local/java/jdk1.8.0_121 export HIVE_HOME=/usr/local/hive/apache-hive-1.2.2-bin
2.修改hive-site.xml
cp hive-default.xml.template hive-site.xml
删除原有数据,添加如下数据
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hotname:3306/hive?user=hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
<description>username to use against metastore database.hive连接数据库用户名</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
<description>password to use against metastore database.hive连接数据库密码</description>
</property>
3.将mysql.jar拷贝到hive的lib目录下
4.解决jline版本不一致问题,将hive中的jline拷贝到share/hadoop/yarn/lib/下.如果不处理将会报错:Found class jline.Terminal, but interface was expected
4.1 初始化mysql: sh schematool -dbType mysql -initSchema
5.启动hive
1. bin/hive
2.将hive启动成服务:./bin/hiveserver2
3.使用客户端连接hive
./bin/beeline
!connect jdbc:hive2://localhost:10000
6.Hive的数据存储:
1、Hive中所有的数据都存储在 HDFS 中,没有专门的数据存储格式(可支持Text,SequenceFile,ParquetFile,RCFILE等)
2、只需要在创建表的时候告诉 Hive 数据中的列分隔符和行分隔符,Hive 就可以解析数据。
3、Hive 中包含以下数据模型:DB、Table,External Table,Partition,Bucket。
db:在hdfs中表现为${hive.metastore.warehouse.dir}目录下一个文件夹
table:在hdfs中表现所属db目录下一个文件夹
external table:外部表, 与table类似,不过其数据存放位置可以在任意指定路径
普通表: 删除表后, hdfs上的文件都删了
External外部表删除后, hdfs上的文件没有删除, 只是把文件删除了
partition:在hdfs中表现为table目录下的子目录(提高查询效率),比如日志流量按天分,需要查询某一天的,那么查询效率就很高。
bucket:桶, 在hdfs中表现为同一个表目录下根据hash散列之后的多个文件, 会根据不同的文件把数据放到不同的文件中 (创建表可以指定为分桶表,一个reduce对对应一个表,提高join。Id相同在同一个桶,在join的时候不要做笛卡儿积了)
https://cwiki.apache.org/confluence/display/Hive/Hive+on+Spark:+Getting+Started
7. hive客户端:SQuirrel SQL Client
http://squirrel-sql.sourceforge.net/
创建表报错:
Error: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask.
MetaException(message:For direct MetaStore DB connections, we don't support retries at the client level.) (state=08S01,code=1)
我在创建数据库时,字符集设置为UTF8,这里需要配置mysql的字符集:(如果不行要删了数据库重新创建)
alter database hive character set latin1;
将hdfs数据load进表:
load data inpath '/weblog/pre/' overwrite into table ods_weblog_origin partition (datestr='2017-06-19');
1.将数据put到hdfs,这里如果存在crc文件,那么需要保证原文件未被修改过,否则put过程报错
2.hive load数据报 无权限 错误: hadoop fs -chmod -R 755 /weblog
3.每次load之后,hdfs中的文件将会被删除