[TOC]
组件
metastore
gateway
hiveserver2
1 在HDFS中创建/tmp和/user/hive/warehouse并设置权限
hadoop fs -mkdir /tmp
hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -chmod g+w /tmp
hadoop fs -chmod g+w /user/hive/warehouse
2 下载mysql-connector-java-5.1.27-bin.jar文件,并放到$HIVE_HOME/lib目录下
下载mysql-connector-java-5.1.27-bin.jar文件,并放到$HIVE_HOME/lib目录下
https://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.27
3 需要创建在mysql 中 hive 的数据库 (注意docker 中的mysql容器启动)
- MariaDB数据库管理系统是MySQL的一个分支,启动我本地的maria
[图片上传失败...(image-c078bb-1571909665062)]
4 初始化meta数据库
schematool -initSchema -dbType mysql
5 测试hive shell
hive
show databases;
show tables;
- 红框是没启动数据库的
- 绿框是启动后的
6 将本地文件考入 hdfs 文件系统中
hdfs dfs -put <local> <hdfs>
7 hive创建新表
hive> CREATE TABLE t_hive (a int, b int, c int) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
OK
Time taken: 0.121 seconds
8 导入数据t_hive.txt到t_hive表(/hdfs导入)
hive> LOAD DATA LOCAL INPATH '/tmp/t_hive.txt' OVERWRITE INTO TABLE t_hive ;
Loading data to table default.t_hive
OK
Time taken: 0.609 seconds
9 查看表
hive> show tables;
OK
t_hive
Time taken: 0.099 seconds
10 正则匹配表名
hive>show tables '*t*';
OK
t_hive
Time taken: 0.065 seconds
11 查看表结构
hive> desc t_hive;
OK
a int
b int
c int
Time taken: 0.1 seconds
12在hive中查看目录结构
hive> dfs -lsr /;
创建test表
create table test(
id int, name string
,tel string)
partitioned by
(age int)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE;
下面语句就是将wyp表中的查询结果并插入到test表中:
hive> insert into table test
partition (age='25')
select id, name, tel
from wyp;
查看表
hive> select * from test;
让hive 事务支持ACID
---修改hive-site.xml-使他支持ACID--
<property>
<name>hive.support.concurrency</name>
<value>true</value>
</property>
<property>
<name>hive.exec.dynamic.partition.mode</name>
<value>nonstrict</value>
</property>
<property>
<name>hive.txn.manager</name>
<value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value>
</property>
<property>
<name>hive.compactor.initiator.on</name>
<value>true</value>
</property>
<property>
<name>hive.compactor.worker.threads</name>
<value>2</value>
</property>
hive 动态分区 && 静态分区
跟静态分区对比的好处是 sql 语句没有那么多。
-
静态分区& 查询
- 创建 create table ptest (userid int) partitioned by (date string) row format delimited fields terminated by '\t'; - 导入 load data local inpath '/' into table ptest partion (date="2019-07-11");
hive 分区表和分桶表
分桶是相对分区进行更细粒度的划分。分桶将整个数据内容安装某列属性值得hash值进行区分,如要安装name属性分为3个桶,就是对name属性值的hash值对3取摸
Hive学习之抽样(tablesample)
当数据量特别大时,对全体数据进行处理存在困难时,抽样就显得尤其重要了。抽样可以从被抽取的数据中估计和推断出整体的特性,是科学实验、质量检验、社会调查普遍采用的一种经济有效的工作和研究方法。
Hive支持桶表抽样和块抽样,下面分别学习。所谓桶表指的是在创建表时使用CLUSTERED BY子句创建了桶的表。桶表抽样的语法如下:
table_sample: TABLESAMPLE (BUCKET x OUT OF y [ON colname])
hive 引擎
hive.execution.engine=spark
hive.execution.engine=mr
37开 - 原创文章(已经在多平台发表),转载请标明出处
网友评论