hive 使用方法 建表及匯入匯出資料 一

2021-08-10 08:09:48 字數 4172 閱讀 6036

hive 官網: 不區分版本,所有資訊都在乙個檔案彙總,會標記適合哪些版本

ddl1) create/drop/alter/use database

create database if not exists test_db;

show databases;

create [temporary] [external] table [if not exists] [db_name.]table_name

[stored as file_format]

注:file_format: 檔案儲存的格式,預設為textfile,sequencefile(hdfs底層的二進位制檔案)

eg1: 建立乙個student表,將本地檔案student載入到表中。

create table if not exists student(

num int,

name string

) row format delimited fields terminated by '\t'

stored as textfile;

load data local inpath '/opt/tools/student' into table student;

vi /opt/tools/student

1 xiaohong

2 xiaowang

載入日誌資訊:

loading data to table default.student

table default.student stats: [numfiles=1, numrows=0, totalsize=22, rawdatasize=0]

oktime taken: 0.971 seconds

2) truncate table 刪除表
truncate table table_name [partition partition_spec];  //清除資料,表結構還在。

drop table ; //表檔案和結構都刪除

檢視mysql元資料是否被刪除:檢視 metastore表中的 tbls

3) 表建立的方式 3種
* 子查詢->將子查詢出來的結果賦予給新的表中。

create table if not exists student2 as select * from student;

* like --> 只複製結構,沒有資料。

create table student_3 like student2;

* 普通建表

create table student1(

id int,

name string

)

4)表的型別

注意:先建立內部表,然後再建外部表;

修改基本不會涉及,update只能改管理表,外部表不能進行update;

i)管理表

create table dept(

deptno int,

dname string,

loc string

)row format delimited fields terminated by '\t';

load data local inpath '/opt/tools/dept.txt' into table dept;

create table emp(

empno int,

ename string,

job string,

mgr int,

hiredate string,

sal double,

comm double,

deptno int

)row format delimited fields terminated by '\t';

load data local inpath '/opt/tools/emp.txt' into table emp;

將本地的檔案 copy到hdfs:

copying data from file:/opt/tools/dept.txt

copying file: file:/opt/tools/dept.txt

loading data to table default.dept

table default.dept stats: [numfiles=1, numrows=0, totalsize=79, rawdatasize=0]

okii)外部表 多個表操作同乙個檔案 指定資料檔案目錄用:( location )

create external table emp_ext(

empno int,

ename string,

job string,

mgr int,

hiredate string,

sal double,

comm double,

deptno int

)row format delimited fields terminated by '\t';

load data local inpath '/opt/tools/emp.txt' into table emp_ext;

(load data inpath 把原來的資料移走)

(load data local inpath 把本地資料拷貝到hdfs的表目錄下)

5)分割槽表

6) 載入資料

7)匯入資料 (6種)

注:

- insert into 語句並沒有執行reduce任務,有group by的才有reduce;

- load local 和 hdfs 根據資料量的不同來選擇;

- 子查詢插入資料和insert 插入資料後儲存的資料檔案一樣,方式相同。

- load 是最普遍的操作。

8) 匯出方式

通過hdfs 的shell : dfs -get 命令來獲取資料檔案。

通過hive -e -f 引數將輸出的結果重定向到本地檔案中。

sqoop (做hive和關係型資料庫交換資料的橋梁,進行匯入匯出)

注意:hive支援匯入和匯出

export table tb_name to 'hdfs_path'

import table tb_name from 'hdfs_path'

9) 匯出資料的location 示例
location : 用於指定表資料檔案所存放的目錄,必須是目錄,不能具體到檔案,建立表後只需將資料檔案放到指定目錄,select table 就可以查出資料;(location多用於external 表,不需要移動資料檔案的位置,只要指定資料位置即可對錶中資料進行操作。)

1、資料檔案字hdfs上。(原來就有的資料檔案)

create external table emp_ext

(empno int,

ename string,

job string,

mgr int,

hiredate string,

sal double,

comm double,

deptno int

)row format delimited fields terminated by '\t'

location "/nihao";

2、資料檔案在本地:

create external table emp_ext1

(empno int,

ename string,

job string,

mgr int,

hiredate string,

sal double,

comm double,

deptno int

)row format delimited fields terminated by '\t'

location "file:///opt/datas";

create table nihao21(

id int,

name string

)row format delimited fields terminated by '\t'

location '/nihao/';

hive建庫建表與資料匯入匯出

hive建表 hive分內部表與外部表,建立內部表時,會將資料移動到資料倉儲指向的路徑 若建立外部表,僅記錄資料所在的路徑,不對資料的位置做任何改變。在刪除表的時候,內部表的元資料和資料會被一起刪除,而外部表只刪除元資料,不刪除資料。這樣外部表相對來說更加安全些,資料組織也更加靈活,方便共享源資料。...

hive建表 匯入資料 匹配

1.建表 建立非重複表,分隔符設定為 create table if not exists imei guid imei string row format delimited fields terminated by 2.匯入 將本地資料夾的資料上傳到hive,適用資料量較大情況 concaten...

hive建表及表操作

建表的三種形式 1.直接建表 create external table if not exists tab name row 1 type,row 2 type partition by row 3 type,type 4 type row format delimited fields term...