hive安装
hive镜像:
http://mirror.bit.edu.cn/apache/hive/
https://mirrors.tuna.tsinghua.edu.cn/apache/hive/
1.解压、添加环境变量
把apache-hive-2.3.6-bin.tar.gz上传到linux的/opt/目录下,并解压。
[root@master opt]# tar -zxvf ./ apache-hive-2.3.6-bin.tar.gz #解压文件到当前/opt目录
[root@master opt]# mv ./apache-hive-2.3.6-bin ./hive #将文件夹名改为hive
添加环境变量:
[root@master opt]# vi ~/.bash_profile
添加如下代码:
export HIVE_HOME=/opt/hive
export PATH=$HIVE_HOME/bin:$HIVE_HOME/sbin:$PATH
source ~/.bash_profile #立即生效
2.修改配置文件
在/opt/hive/confg/目录下新建一个文件名称为 hive-site.xml。
[root@master conf]# vi ./hive-site.xml
内容如下:
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<property>
<name>datanucleus.schema.autoCreateAll</name>
<value>true</value>
<description>creates necessary schema on a startup if one doesn't exist. set this to false, after creating it once</description>
</property>
<property>
<name>hive.metastore.local</name>
<value>false</value>
<description>controls whether to connect to remove metastore server or open a new metastore server in Hive Client JVM</description>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master:3306/hive?createDatebaseIfNotExist=true@amp;useSSL=false</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>root</value>
<description>Username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword </name>
<value>bigData@123</value>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<property>
<name>datanucleus.readOnlyDatastore</name>
<value>false</value>
</property>
<property>
<name>datanucleus.fixedDatastore</name>
<value>false</value>
</property>
<property>
<name>datanucleus.autoCreateSchema</name>
<value>true</value>
</property>
<property>
<name>datanucleus.autoCreateTables</name>
<value>true</value>
</property>
<property>
<name>datanucleus.autoCreateColumns</name>
<value>true</value>
</property>
</configuration>
3.配置hive-env.sh
[root@master conf]# cp hive-env.sh.template hive-env.sh
[root@master conf]# vi hive-env.sh
添加如下内容:
HADOOP_HOME=/opt/hadoop # 配置 HAOOP_HOME 目录
export HIVE_CONF_DIR=/opt/hive/conf # 配置 Hive 配置目录信息
3.添加mysql驱动
使用 Xftp 复制 mysql-connector-java-5.1.46.jar JAVA 驱动包到 hive/lib下面
创建目录,与前面配置目录对应
[root@master conf]# hadoop fs -mkdir -p /user/hive/warehouse
4.启动hive
启动hadoop
cd $HADOOP_HOME
./start-all.sh
启动metastore服务:一般默认会自动该服务
[root@master ~]# hive --service metastore &
[1] 6286
启动hive客户端
hive
5.hive简单使用
以数据源chengdu.txt为例,数据如下:
大数据分析开发工程师|成都|8K-15K|3-5年|本科
双休大数据销售高提成|成都|8K-10K|3-5年|中专
无责3K+双休高提成+大数据|成都|6K-12K|不限|学历不限
大数据分析专员|成都|6.5K-12K|1-3年|大专
大数据高级工程师|成都-金牛区|10K-15K|3-5年|本科
高级Java工程师(架构、大数据)|成都-天府新区|25K-40K|3-5年|本科
大数据架构师|成都-高新区|20K-30K|5-10年|本科
大数据安全研发工程师|成都-高新区|15K-20K|1-3年|硕士
大数据软件开发工程师|成都-高新区|10K-15K|不限|本科
大数据架构师|成都-高新区|20K-30K|5-10年|本科
大数据开发工程师|成都-高新区|10K-15K|不限|学历不限
大数据工程师|成都-高新区|10K-15K|3-5年|本科
大数据架构师初级|成都-高新区|6K-10K|1-3年|本科
大数据架构师|成都-高新区|15K-25K|5-10年|本科
大数据架构师|成都|15K-25K|5-10年|本科
大数据架构师|成都|12K-22K|3-5年|本科 ……
1:创建表:与数据源字段对应
hive> create table tb_chengdu(
> occupation string,
> adress string,
> salary string,
> work_exp string,
> education string
> )row format delimited fields terminated by '|'; ##注意分割符
OK
Time taken: 1.784 seconds
hive>
hive> show tables;
OK
tb_chengdu
2:加载数据chengdu.tx
hive> load data local inpath '/opt/data/chengdu.txt' into table tb_chengdu; ##数据在mater本地,并非hdfs上
Loading data to table default.tb_chengdu
OK
Time taken: 5.205 seconds
3:查询前五条大数据相关的职位、薪水、工作经验、学历等字段
hive> select occupation,salary,work_exp,education from tb_chengdu where occupation like '%大数据%' limit 5;
OK
大数据分析开发工程师 8K-15K 3-5年 本科
双休大数据销售高提成 8K-10K 3-5年 中专
无责3K+双休高提成+大数据 6K-12K 不限 学历不限
大数据分析专员 6.5K-12K 1-3年 大专
大数据高级工程师 10K-15K 3-5年 本科
Time taken: 4.175 seconds, Fetched: 5 row(s)
hive的使用说明
可以把结构化的数据文件映射成一张数据库表。
学生信息
张三|190908|男|大数据18-1
李四|190907|女|大数据18-1
元数据Hive Metasore
Metasore:就是Hive元数据集中存储的地方。
Hive默认用Derby数据库存储元数据,只能允许一个用户访问。用于测试。
使用mysql作为外置(远程)数据存储引擎。可以多用户同时访问。
其中常用类型如表1所示。
表1 常用数据类型
类型 |
名称 |
描述 |
基本类型 |
整型 |
分4个子类,分别是TINYINT、SMALLINT、INT、BIGINT 。常用的是INT |
浮点型 |
分FLOAT(单精度浮点数)和DOUBLE(双精度浮点数) |
|
布尔型 |
TRUE、FALSE |
|
小数 |
DECIMAL |
|
字符串 |
VARCHAR、CHAR、string |
|
日期和时间 |
DATE、Timestamp |
|
空值 |
NULL |
|
复合类型 |
Arrays |
数组 |
Structs |
包含多个键值对 |
|
Maps |
键值对 |
表类型
Hive的数据表分四类,分别是:内部表、外部表、分区表和桶表。每种表都有各自的特点,这里简要介绍如下:
(1) 内部表:由Hive自身管理,默认情况下创建的都是内部表。内部表数据存储位置默认存储在HDFS的/user/hive/warehouse路径下,可以通过由hive-site.xml文件中hive.metastore.warehouse.dir节点指定其它目录。当删除内部表时,相关元数据和HDFS上的数据也随之删除。
(2) 外部表:创建时需要指定external参数。外部表数据的存储位置由用户指定。删除外部表仅仅会删除元数据,HDFS上的文件并不会被删除。
(3) 分区表:根据分区字段和分区值在HDFS上创建数据分类目录。上传的数据会根据分类存放到不同的目录下。
(4) 桶表:指定数据分桶的个数,上传数据时根据键的hash值均匀的存到不同的桶中。分桶是将数据拆分成小块,存到各自的桶,分区是将数据分类存到各自的目录。
附件:
1:hive安装问题集
https://blog.csdn.net/l1028386804/article/details/51566262 ##无法初始化数据源的问题
https://blog.csdn.net/gaoganghua/article/details/80621670 ##数据库编码修改为labtin1