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

一篇文章徹底明白Hive數據存儲的各種模式

云計算
Hive是基于Hadoop分布式文件系統的,它的數據存儲在Hadoop分布式文件系統中。Hive本身是沒有專門的數據存儲格式,也沒有為數據建立索引,只需要在創建表的時候告訴Hive數據中的列分隔符和行分隔符,Hive就可以解析數據。所以往Hive表里面導入數據只是簡單的將數據移動到表所在的目錄中

Hive的數據分為表數據和元數據,表數據是Hive中表格(table)具有的數據;而元數據是用來存儲表的名字,表的列和分區及其屬性,表的屬性(是否為外部表等),表的數據所在目錄等。下面分別來介紹。

一、Hive的數據存儲

在讓你真正明白什么是hive 博文中我們提到Hive是基于Hadoop分布式文件系統的,它的數據存儲在Hadoop分布式文件系統中。Hive本身是沒有專門的數據存儲格式,也沒有為數據建立索引,只需要在創建表的時候告訴Hive數據中的列分隔符和行分隔符,Hive就可以解析數據。所以往Hive表里面導入數據只是簡單的將數據移動到表所在的目錄中(如果數據是在HDFS上;但如果數據是在本地文件系統中,那么是將數據復制到表所在的目錄中)。

Hive中主要包含以下幾種數據模型:Table(表),External Table(外部表),Partition(分區),Bucket(桶)(本博客會專門寫幾篇博文來介紹分區和桶)。

1、表:Hive中的表和關系型數據庫中的表在概念上很類似,每個表在HDFS中都有相應的目錄用來存儲表的數據,這個目錄可以通過${HIVE_HOME}/conf/hive-site.xml配置文件中的 hive.metastore.warehouse.dir屬性來配置,這個屬性默認的值是/user/hive/warehouse(這個目錄在 HDFS上),我們可以根據實際的情況來修改這個配置。如果我有一個表wyp,那么在HDFS中會創建/user/hive/warehouse/wyp 目錄(這里假定hive.metastore.warehouse.dir配置為/user/hive/warehouse);wyp表所有的數據都存放在這個目錄中。這個例外是外部表。

2、外部表:Hive中的外部表和表很類似,但是其數據不是放在自己表所屬的目錄中,而是存放到別處,這樣的好處是如果你要刪除這個外部表,該外部表所指向的數據是不會被刪除的,它只會刪除外部表對應的元數據;而如果你要刪除表,該表對應的所有數據包括元數據都會被刪除。

3、分區:在Hive中,表的每一個分區對應表下的相應目錄,所有分區的數據都是存儲在對應的目錄中。比如wyp 表有dt和city兩個分區,則對應dt=20131218,city=BJ對應表的目錄為/user/hive/warehouse /dt=20131218/city=BJ,所有屬于這個分區的數據都存放在這個目錄中。

4、桶:對指定的列計算其hash,根據hash值切分數據,目的是為了并行,每一個桶對應一個文件(注意和分區的區別)。比如將wyp表id列分散至16個桶中,首先對id列的值計算hash,對應hash值為0和16的數據存儲的HDFS目錄為:/user /hive/warehouse/wyp/part-00000;而hash值為2的數據存儲的HDFS 目錄為:/user/hive/warehouse/wyp/part-00002。

來看下Hive數據抽象結構圖

 

從上圖可以看出,表是在數據庫下面,而表里面又要分區、桶、傾斜的數據和正常的數據等;分區下面也是可以建立桶的。

二、Hive的元數據

Hive中的元數據包括表的名字,表的列和分區及其屬性,表的屬性(是否為外部表等),表的數據所在目錄等。 由于Hive的元數據需要不斷的更新、修改,而HDFS系統中的文件是多讀少改的,這顯然不能將Hive的元數據存儲在HDFS中。目前Hive將元數據存儲在數據庫中,如Mysql、Derby中。我們可以通過以下的配置來修改Hive元數據的存儲方式

 

  1. <property> 
  2.   <name>javax.jdo.option.ConnectionURL</name> 
  3.   <value>jdbc:mysql://localhost:3306/hive_hdp?characterEncoding=UTF-8 
  4.                     &createDatabaseIfNotExist=true</value> 
  5.   <description>JDBC connect string for a JDBC metastore</description> 
  6. </property> 
  7.   
  8. <property> 
  9.   <name>javax.jdo.option.ConnectionDriverName</name> 
  10.   <value>com.mysql.jdbc.Driver</value> 
  11.   <description>Driver class name for a JDBC metastore</description> 
  12. </property> 
  13.   
  14. <property> 
  15.   <name>javax.jdo.option.ConnectionUserName</name> 
  16.   <value>root</value> 
  17.   <description>username to use against metastore database</description> 
  18. </property> 
  19.   
  20. <property> 
  21.   <name>javax.jdo.option.ConnectionPassword</name> 
  22.   <value>123456</value> 
  23.   <description>password to use against metastore database</description> 
  24. </property> 

 

當然,你還需要將相應數據庫的啟動復制到${HIVE_HOME}/lib目錄中,這樣才能將元數據存儲在對應的數據庫中。
 

責任編輯:Ophira 來源: about云開發
相關推薦

2024-06-25 08:18:55

2013-04-15 10:59:08

iOS開發ARC版本說明

2023-04-06 08:37:24

2021-02-15 13:38:38

多線程異步模型

2024-05-17 10:05:06

Java機制應用

2017-07-20 16:55:56

Android事件響應View源碼分析

2025-01-26 15:38:11

Spring事務編程式

2024-02-28 12:41:00

源碼內核參數

2021-05-08 07:14:38

MySQL數據庫安全性

2020-04-14 20:40:58

Git內部存儲

2020-10-09 08:15:11

JsBridge

2019-07-23 08:55:46

Base64編碼底層

2021-04-07 13:28:21

函數程序員異步

2023-01-03 18:32:32

2017-11-02 14:06:40

2024-05-10 08:19:59

arthasjava字節碼

2021-11-11 12:02:17

HiveOrderSort

2022-02-21 09:44:45

Git開源分布式

2019-04-17 15:16:00

Sparkshuffle算法

2021-06-30 00:20:12

Hangfire.NET平臺
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日高清视频 | 最新av中文字幕 | 久久精品国产久精国产 | 超级乱淫av片免费播放 | 99福利视频 | 色综合久久天天综合网 | 国产亚洲精品精品国产亚洲综合 | 亚洲久草 | 欧美 日韩精品 | h视频在线免费观看 | 伊人免费观看视频 | 欧美日韩在线国产 | 97超碰人人草 | 日韩成年人视频在线 | 天天操,夜夜爽 | 亚洲精品一区二区在线观看 | 亚洲国产精品视频一区 | 超碰人人人人 | 日一区二区三区 | 91久久精品 | 在线一区二区三区 | 久久最新精品 | 国产成人综合在线 | 免费观看一级特黄欧美大片 | 日本又色又爽又黄又高潮 | 黄网站在线播放 | 狠狠爱免费视频 | 成人日韩精品 | 亚洲精品视频免费 | 草久在线 | 91网站在线观看视频 | 久久99精品久久久久久 | 国产在线一区二区 | 国产精品亚洲一区二区三区在线 | 亚洲视频在线观看 | 亚洲伊人精品酒店 | 日本一区二区三区视频在线 | av国产精品 | 国内av在线 | 国产一区二区三区在线看 | 国产精品久久久久久吹潮 |