hive元數據庫理解和初級實操

1. hive元數據庫

  1. hive創建一張表,關聯HDFS上存儲的結構化數據,那麼這張表存儲在哪裏?
    其實hive會把用戶創建的數據庫表等抽象的信息專門存儲在一個數據庫中,這個數據庫就是-------元數據庫。
  2. HDFS存儲的數據有兩種:
    ①用戶的真實數據,存儲在datanode中
    ②抽象和管理這些真實數據的數據,叫做元數據,存儲在namenode中
    namenode類比於書本的目錄,datanode類比於書本的內容,書本的內容存儲的是真實的數據,而目錄(元數據,管理數據的數據)可以翻到這一頁內容(真實數據)。
  3. hive創建的數據庫或者數據表,對應存儲在元數據庫不是一個數據庫和一張表,而是一條條的記錄。(下面的實操會更好理解)
  4. 我們在安裝hive的時候,只需要對元數據庫初始化一次就可以,初始化第二次會把第一次創建出來的元數據庫覆蓋。

2. hive實操

  1. 創建一個文件,寫入數據
    vim students.txt
    在這裏插入圖片描述

  2. 在HDFS上創建一個目錄,將students.txt文件上傳到HDFS
    hadoop fs -mkdir -p /student1029/input
    hadoop fs -put /本地文件目錄/students.txt /student1029/input
    在這裏插入圖片描述

  3. 創建hive數據庫並使用該數據庫
    select current_database(); //查看當前使用的數據庫
    create database if not exists student1029;
    use student1029;

  4. 創建hive數據表並添加數據

方法1:外部表

create external table student(
id int, 
name string, 
gender string, 
age int, 
department string) 
row format delimited fields terminated by ',' 
lines terminated by '\n' 
location '/student1029/input/';

external table外部數據庫表,表中的數據不存儲在數據庫中,而是在與數據庫相關聯的普通外部文件裏。(即student外部表中的數據其實是連接了存儲在HDFS上的students.txt文件
row format delimited關鍵字,是用來設置創建的表在加載數據的時候,支持的列分隔符
fields terminated by “,”:列分隔符按","
lines terminated by “\n”:分隔符按"\n"換行

方法2:內部表

create table student2(
id int, 
name string, 
gender string, 
age int, 
department string) 
row format delimited fields terminated by ','
lines terminated by '\n';

往表中添加本地數據,數據會存儲在數據庫中
load data local inpath "/home/hadoop/students.txt" into table student;
  1. 查看hive創建的數據庫
    在這裏插入圖片描述

  2. 查看在mysql中的數據庫
    hivedb就是元數據庫,在安裝hive的時候指定的
    在這裏插入圖片描述

  3. 查看hive元數據庫中的元數據表
    元數據庫中有57張表,組成一個元數據庫。
    在這裏插入圖片描述
    其中:
    DBS表中存儲hive創建的數據庫
    TBLS表中存儲hive創建的數據表
    Hive創建的數據庫和表在元數據庫中都是以一條條記錄的形式存在
    student1029就是我們剛剛創建的hive數據庫,在元數據庫中是以記錄的形式存在。
    select * from DBS; #注意區分大小寫
    在這裏插入圖片描述
    這兩張表就是我們創建的hive數據表,在元數據庫中是以記錄的形式存在。
    select * from TBLS;
    在這裏插入圖片描述

  4. 查看錶結構
    desc student;
    在這裏插入圖片描述

  5. 查看錶的元數據信息
    desc formatted student;
    能夠查看錶結構,還有表的詳細信息,如這個表屬於哪個用戶,存放位置,所屬哪個數據庫等,還有行列是按照什麼分割符分割的。
    在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章