成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Hive從概念到安裝使用總結

開發 前端
hive中的表實質就是HDFS的目錄,按表名將文件夾分開,若是分區表,則分區值是子文件夾。這些數據可以直接在M/R中使用。hive中的數據是存放在HDFS中的。

一、Hive的基本概念

1.1 hive是什么?

(1)Hive是建立在hadoop數據倉庫基礎之上的一個基礎架構;

(2)相當于hadoop之上的一個客戶端,可以用來存儲、查詢和分析存儲在hadoop中的數據;

(3)是一種SQL解析引擎,能夠將SQL轉換成Map/Reduce中的Job在hadoop上執行。

1.2 hive的數據存儲特點

(1)數據存儲是基于hadoop的HDFS;

(2)沒有專門的數據存儲格式;

(3)存儲結構主要有:數據庫、文件(默認可以直接加載文本文件)、表、視圖、索引;

說明:hive中的表實質就是HDFS的目錄,按表名將文件夾分開,若是分區表,則分區值是子文件夾。這些數據可以直接在M/R中使用。hive中的數據是存放在HDFS中的。

二、hive的系統結構

存儲hive的元數據(表及表的屬性、數據庫名字等)

分析執行hive QL語句,將執行計劃投遞給hadoop,轉到map/reduce執行

2.1 hive的系統結構– metastore存儲方式

默認情況,元數據使用內嵌的derby數據庫作為存儲引擎

將存儲數據獨立出來,支持多用戶同時訪問

將metastore獨立出來,遠程方法調用

三、hive的安裝與使用

3.1下載hive源文件,解壓hive文件

進入$HIVE_HOME/conf/修改文件

  1. cp  hive-default.xml.template  hive-site.xml 
  2. cp  hive-env.sh.template hive-env.sh 

修改$HIVE_HOME/bin的hive-env.sh,增加以下三行

  1. HADOOP_HOME=    --hadoop的home目錄 
  2. export HIVE_CONF_DIR=   --hive的conf目錄 
  3. export HIVE_AUX_JARS_PATH=   --hive的lib目錄 

生效文件:

  1. source /hive-env.sh(生效文件) 

3.2 配置MySQL的metastore

修改$HIVE_HOME/conf/hive-site.xml

  1. <property> 
  2.  
  3. <name>javax.jdo.option.ConnectionURL</name> 
  4.  
  5. <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value> 
  6.  
  7. </property> 
  8.  
  9. <property> 
  10.  
  11. <name>javax.jdo.option.ConnectionDriverName</name> 
  12.  
  13. <value>com.mysql.jdbc.Driver</value> 
  14.  
  15. </property> 
  16.  
  17. <property> 
  18.  
  19. <name>javax.jdo.option.ConnectionUserName</name> 
  20.  
  21. <value>root</value> 
  22.  
  23. </property> 
  24.  
  25. <property> 
  26.  
  27. <name>javax.jdo.option.ConnectionPassword</name> 
  28.  
  29. <value>123456</value> 
  30.  
  31. </property> 

3.3hive臨時目錄的配置

修改$HIVE_HOME/conf/hive-site.xml

(1)設定數據目錄

  1. <property> 
  2.  
  3. <name>hive.metastore.warehouse.dir</name> 
  4.  
  5. <value>/usr/local/hive/warehouse</value> 
  6.  
  7. </property> 

(2)設定臨時文件目錄

  1. <property> 
  2.  
  3. <name>hive.exec.scratdir</name> 
  4.  
  5. <value>/usr/local/hive/tmp</value> 
  6.  
  7. </property> 

(3)hive相關日志的目錄

  1. <property> 
  2.  
  3. <name>hive.querylog.location</name> 
  4.  
  5. <value>/usr/local/hive/log</value> 
  6.  
  7. </property> 

3.4hive的運行模式的指定

Hive的運行模式即任務的執行環境,分為本地與集群兩種,我們可以通過mapred.job.tracker 來指明

本地模式設置方式:

  1. hive > set mapred.job.tracker=local; 
  2. hive > set hive.exec.mode.local.auto=true
  3. hive.exec.mode.local.auto.inputbytes.max默認128M 

3.5 sqoop的安裝

(1)下載、解壓:

  1. tar -zxvf sqoop-1.4.4.bin__hadoop-2.0.4-alpha.tar.gz /root 
  2. cd /root 
  3. ln -s sqoop-1.4.3.bin sqoop 

(2)配置sqoop:

  1. vi ~/.bash_profile 
  2. export SQOOP_HOME=/usr/local/sqoop 
  3. export PATH=$SQOOP_HOME/bin:$PATH 

(3)測試連接數據庫并列出數據庫:

  1. sqoop list-databases --connect jdbc:mysql://localhost:3306/ --username root --password 123456 

(4)將mysql中的表導入到hive中:

  1. sqoop import --connect jdbc:mysql://localhost:3306/gwifi --username root --password 123456 --table think_access --hive-import -m 1; 

3.6 hive的命令行方式

1、輸入#/hive/bin/hive執行應用程序, 或者

  1. #hive 
  2. hive> create table test(id int, name string); 
  3. hive> show tables; 
  4. hive>quit; 

查看并修改表與目錄之間的關系

  1. #hadoop fs -ls /user/hive/warehouse/ 

修改參數:hive.metastore.warehouse.dir 表與目錄的對應關系

3.6 命令行方式

顯示或修改參數值

在代碼中可以使用${…}來使用

命名空間

使用權限

描述

hivevar

可讀寫

$ hive -d name=zhangsan;

hiveconf

可讀寫

$ hive –hiveconf hive.cli.print.current.db=true;$ hive –hiveconf hive.cli.print.header=true;

system

可讀寫

java定義的配置屬性,如system:user.name

env

只讀

shell環境變量,如env:USER

3.7 hive的腳本運行

$>hive -i /home/my/hive-init.sql
$hive>source file

與linux交互命令 !

!ls
!pwd

與hdfs交互命令

dfs -ls /
dfs -mkdir /hive

3.8 hive的jdbc模式

JAVA API交互執行方式

hive 遠程服務 (端口號10000) 啟動方式

3.9 hive常用的命令– set命令

hive控制臺set命令:

set hive.cli.print.current.db=true;
set hive.metastore.warehouse.dir=/hive

hive參數初始化配置set命令:

~/.hiverc

四、HiveQL數據操作

4.1數據類型

1、基本數據類型:與mysql等數據庫中基本數據類型類似;

2、復合數據類型:

(1)array 數組類型 如:array[int] 下標訪問

(2)struct結構類型 如: struct{name:STRING,age:INT} .訪問

(3)Map結構

4.2 數據庫/表的定義、操作

默認使用的是“default”數據庫,使用命令選擇數據庫:

hive> use <數據庫名>

創建數據庫: create database <數據庫名>

查看所有數據庫: show databases;

查看/刪除數據庫:desc/drop database <數據庫名>;

注:Hive沒有 行級別的插入,更新和刪除操作,往表中插入數據的唯一方法就是使用成批載入操作

hive>create table 表名(字段名 字段類型,……)

hive>show tables;

hive>create table t2 like t1;

hive> drop table 表名    —刪除表

增加列

hive>ALTER TABLE t3 ADD COLUMNS(gender int);

在mysql中hive數據庫中show tables; 在TBLS表中可以查看到hie創建的表。

4.3 數據庫/表的定義、操作

插入數據:insert overwrite table t_table1 select * from t_table1 where XXXX;

刪除數據:insert overwrite table test select * from test where 1=0;

數組類型的表的操作:

定義復合數據類型的 表:create table demo_array(id int, mydata array[string])  PARTITIONED BY (dt STRING)  row format delimited fields terminated by ’\t’ collection items terminated by ’|';

–id 與mydata之間是’\t’隔開,其后的mydata數據之間用’|'隔開

4.3.1 Hive的數據模型-管理表

管理表,也稱作內部表或受控表

特點:(1)數據全部保存在warehouse目錄中;

(2)刪除表時元數據和表中的數據都會被刪除;

(3)創建表和數據加載可以在同一條語句中實現;

(4)每個表在HDFS中都有相應的目錄用來存儲表的數據

(5)加載數據的過程,實際數據會被移動到數據倉庫目錄中;對數據的訪問是在數據倉庫目錄中完成。

4.3.1 Hive的數據模型-管理表

創建數據文件inner_table.dat

創建表

  1. hive>create table inner_table (key string) 
  2. row format delimited fields terminated by '\t'
  3. //這個要指定,否則load的時候數據為NULL; 

加載數據

hive>load data local inpath '/root/inner_table.dat' into table inner_table;

查看數據

select * from inner_table

select count(*) from inner_table

刪除表 drop table inner_table

4.3.2 Hive的數據模型-外部表

包含externable的表叫做外部表

特點:(1)刪除外部表只刪除metastore的元數據,不刪除hdfs中的表數據;

(2)加載數據和創建表是同時完成的,并不會移動到數據,只是與外部數據建立一個鏈接;刪除一個外部表,只是刪除了該鏈接

(3)指向已經在 HDFS 中存在的數據

4.3.2 Hive的數據模型-外部表語法

  1. CREATE EXTERNAL TABLE page_view 
  2.  
  3. ( viewTime INT, 
  4.  
  5. userid BIGINT, 
  6.  
  7. page_url STRING, 
  8.  
  9. referrer_url STRING, 
  10.  
  11. ip STRING COMMENT 'IP Address of the User'
  12.  
  13. country STRING COMMENT 'country of origination‘ 
  14.  
  15.  
  16. COMMENT 'This is the staging page view table' 
  17.  
  18. ROW FORMAT DELIMITED FIELDS TERMINATED BY '44'  LINES  TERMINATED BY '12' 
  19.  
  20. STORED AS TEXTFILE 
  21.  
  22. LOCATION 'hdfs://centos:9000/user/data/staging/page_view'

4.3.3 Hive的數據模型-分區表

分區可以理解為分類,通過分類把不同類型的數據放到不同的目錄下;

分類的標準就是分區字段,可以一個,也可以多個;

分區表的意義在于優化查詢,查詢時盡量利用分區字段;如果不使用分區字段,就會全部掃描。

創建數據文件partition_table.dat

創建表

create table partition_table(rectime string,msisdn string) partitioned by(daytime string,city string) row format delimited fields terminated by '\t' stored as TEXTFILE;

加載數據到分區

load data local inpath '/home/partition_table.dat' into table partition_table partition (daytime='2013-02-01',city='bj');

查看數據

 

  1. select * from partition_table 
  2.  
  3. select count(*) from partition_table 
  4.  
  5. 刪除表 drop table partition_table 

4.3.4 Hive的數據模型-分區表

CREATE TABLE tmp_table #表名

  1.  
  2. title   string, # 字段名稱 字段類型 
  3.  
  4. minimum_bid     double
  5.  
  6. quantity        bigint, 
  7.  
  8. have_invoice    bigint 
  9.  
  10. )COMMENT '注釋:XXX' #表注釋 
  11.  
  12. PARTITIONED BY(pt STRING) #分區表字段(如果你文件非常之大的話,采用分區表可以快過濾出按分區字段劃分的數據) 
  13.  
  14. ROW FORMAT DELIMITED 
  15.  
  16. FIELDS TERMINATED BY '\001'   # 字段是用什么分割開的 
  17.  
  18. STORED AS SEQUENCEFILE; #用哪種方式存儲數據,SEQUENCEFILE是hadoop自帶的文件壓縮格式 

4.4.1 裝載數據

從文件中裝載數據

hive>LOAD DATA [LOCAL] INPATH '...' [OVERWRITE] INTO TABLE t2 [PARTITION (province='beijing')];

通過查詢表重新裝載數據

hive>INSERT OVERWRITE TABLE t2 PARTITION (province='beijing') SELECT * FROM xxx WHERE xx

設置job并行數量 hive.exec.parallel =true;

hive.exec.parallel. thread.number =3;

4.4.2 動態分區裝載數據

開啟動態分區支持

  1. hive>set hive.exec.dynamic.partition=true
  2.  
  3. hive>set hive.exec.dynamic.partition.mode=nostrict; 
  4.  
  5. hive>set hive.exec.max.dynamic.partitions.pernode=1000

#查詢字段一樣

  1. hive>INSERT OVERWRITE TABLE t3 PARTITION(province, city) 
  2.  
  3. SELECT t.province, t.city FROM temp t; 
  4.  
  5. hive>INSERT OVERWRITE TABLE t3 PARTITION(province='bj', city) 
  6.  
  7. SELECT t.province, t.city FROM temp t WHERE t.province='bj'

單語句建表并同時裝載數據

hive>CREATE TABLE t4 AS SELECT ....

select count(0) from (select id from test where name like 'zh%') a join (select id from test where name like '%i%') b on a.id = b.id;

五、hive的存儲形式比較

hive在建表時,可以通過‘STORED AS FILE_FORMAT’ 指定存儲文件格式。有以下幾種:

1.TextFile:存儲空間較大,壓縮之后的文件不能分割與合并,查詢效率低;可直接存儲,加載速度最快;

2.sequencefile:hadoop API提供的一種二進制文件支持,存儲空間最大,可分割與合并,查詢效率高,需要text文件轉換來加載

3.RcFile:是一種行列存儲相結合的存儲方式。(1)將數據按行分塊,保證同一個record在一個塊上,避免讀一個記錄需要讀取多個block;(2)塊數據列式存儲,有利于數據壓縮和快速的列存取。查詢效率最高、存儲空間最小、但加載最慢

總結

 

責任編輯:王雪燕 來源: 碼農網
相關推薦

2024-05-29 12:50:49

2022-05-25 16:32:36

云原生Cloud

2012-04-25 10:02:39

H3CNGIP

2020-03-05 09:53:59

ElasticSearLuceneJava

2009-07-09 18:20:53

云存儲云計算云服務

2010-08-25 17:05:41

DHCP服務器

2013-08-19 11:55:48

華為HCC大會HCC2013華為

2017-07-25 16:04:31

概念應用強化學習

2014-06-04 13:20:52

大數據

2019-04-17 09:53:11

物聯網網關物聯網IOT

2014-03-06 09:38:59

微軟云計算Windows Azu

2012-09-17 09:54:35

云計算云安全

2019-07-12 11:28:00

元數據大數據存儲

2015-09-16 10:58:53

物聯網

2020-05-20 15:27:44

智慧城市數據技術

2018-05-30 08:15:08

人工智能神經網絡

2010-01-15 14:02:48

軟交換技術應用

2017-03-27 20:42:17

遷移學習人工智能機器學習

2021-09-16 19:22:06

Java概念concurrent

2023-10-17 09:36:32

Spark大數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品在线一区二区三区 | 国产精品成人一区 | 日韩国产中文字幕 | 亚洲成av人片在线观看 | av中文字幕在线观看 | 97精品久久 | 国产一区二区三区四区 | 中文av网站 | 久久久久国产精品午夜一区 | 国产一区 | 久久久久久免费免费 | av激情在线 | 久久精品视频在线播放 | 欧美三级在线 | 在线观看涩涩视频 | 欧美黑人一区 | 亚洲国产精品99久久久久久久久 | 日韩视频91 | 亚洲 中文 欧美 日韩 在线观看 | 天堂在线www| 欧美成年网站 | 国产一区二区日韩 | 午夜影院在线观看视频 | 亚洲乱码国产乱码精品精的特点 | 特黄一级 | 欧美伊人久久久久久久久影院 | 天堂一区二区三区四区 | 国产网站在线免费观看 | 韩国电影久久 | 91精品一区二区三区久久久久久 | 国产激情一区二区三区 | 国产精品久久av | av一区在线 | 久久亚洲一区 | 欧美日韩亚洲一区 | 亚洲综合婷婷 | 国产黄色在线 | 中文字幕人成乱码在线观看 | 国产成人高清视频 | 日本久久网| 久久网站黄 |