hive-sql+beeline+導入導出

說明

本博客每週五更新一次。 本文記錄hive知識,主要內容包括sql語句、beeline工具和表數據的導出和導入。

sql

  • 添加

    • 添加字段:alter table 庫名.表名 add columns(字段名 字段類型,字段名 字段類型)
    • 添加分區:alter table 庫名.表名 add if not exists partition (分區名='值',分區名='值');
    • 添加數據:insert into 庫名.表名 values("one","270");
    • 部分字段添加數據:insert into 庫名.表名 (字段一,字段二) values("one","270");
    • 指定分區添加數據:insert into 庫名.表名 partition(分區名="2020060919") values("one","270");
    • 覆蓋表添加:insert overwrite table 庫名.表名 (字段一,字段二) values("one","270");
  • 修改

    • 修改存儲路徑:alter table 庫名.表名 set location '存儲路徑'
    • 修改字段:alter table 庫名.表名 change 舊字段名 新字段名 類型;
      • 壓縮格式存儲的表,修改字段類型,原有數據不可使用,<font color="red">慎重</font>
    • 修改空值null爲默認值0:alter table 庫名.表名 set serdeproperties('serialization.null.format' = '0');
    • 修改表名: alter table 庫名.舊錶名 to 庫名.新表名
    • 修改字段位置:alter table 表名 change 字段一 after 字段二;
      • 將字段一移動到字段二後面,有可能因爲數據類型修改報錯,造成修改不成功。
    • 修改分隔符:alter table 表名 set serdeproperties('field.delim'='\t');,修改分隔符爲\t,建議同步修改下serialization.format
  • 刪除

    • 刪除分區:alter table 庫名.表名 DROP IF EXISTS PARTITION (分區名='值',分區名='值');
    • 刪除字段: ALTER TABLE test REPLACE COLUMNS(id BIGINT, name STRING);
      • 填寫要保留的字段
  • 查看

    • 模糊查詢表:show tables like '*name*';
    • 表字段結構:desc 表名;
    • 表創建語句:show create table 表名;

beeline

  • beeline工具hive庫遠程連接命令:/usr/hdp/current/hive-client/bin/beeline -u jdbc:hive2://ip:10000 -n 用戶名 -p 密碼 -d org.apache.hive.jdbc.HiveDriver

表數據導入導出

  • 導出數據 beeline -u jdbc:hive2://host:10000 --incremental=true --showHeader=false --outputformat=dsv --delimiterForDSV=$'\t' -e 'select * from test' > file.csv

    • --showHeader是否顯示錶頭,只顯示一行表頭,不會多行。
    • –outputformat=table/vertical/csv/tsv/dsv/csv2/tsv2,結果展示的模式。默認是table。dsv可配合delimiterForDSV一起使用,設置分隔
    • --delimiterForDSV 指定輸出格式中劃分值的界定符。默認是‘|’,如果需要輸入特殊符號,如'\n001' ,'\x01'等需在前面加$,例 --delimiterForDSV=$'\t'
  • 導入數據

    • 標準方法:
      • 用beeline將數據導入表中,需要先將文件上傳到hadoop,比如上傳到tmp下:hadoop fs -put 路徑/data.txt /tmp/
      • 進入beeline裏面執行:load data inpath '/tmp/data.txt' overwrite into table 表名
    • 實用方法
      • 將數據上傳到指定hive表分區目錄下
      • 爲hive表創建對應分區

總結

  • hive表數據存儲如果爲壓縮格式如orc、parquet等,修改表字段結構,源數據不可用,因爲表存儲壓縮格式數據,無法隨着表結構變化動態改變。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章