HIVE总结(待更新)

[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;
  • 红框是没启动数据库的
  • 绿框是启动后的
img

6 将本地文件考入 hdfs 文件系统中

hdfs dfs -put  

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--
 
hive.support.concurrency 
true 
 
 
hive.exec.dynamic.partition.mode 
nonstrict 
 
 
hive.txn.manager 
org.apache.hadoop.hive.ql.lockmgr.DbTxnManager 
 
 
hive.compactor.initiator.on 
true 
 
 
hive.compactor.worker.threads 
2 
 

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开 - 原创文章(已经在多平台发表),转载请标明出处

原文地址-99get81.com

你可能感兴趣的:(HIVE总结(待更新))