Hadoop Hive 庫表基本操作

2021-08-19 23:40:48 字數 2733 閱讀 4995

hive 庫表基本操作

建立資料庫

hive> create database if not exists db1;

hive> create schema if not exists db2;

刪除資料庫

hive> drop database db2;

hive> drop schema db1;

建立表

create table if not exists employee ( 

eid int,

name string,

salary string,

job string,

year int)

comment 'employee details'

row format delimited

fields terminated by '\t'

lines terminated by '\n'

stored as textfile;

匯入資料進表

準備資料檔案sample.txt

[root@g12-1 ~]# cat /tmp/sample.txt 

1201 gopal 45000 technicalmanager 2013

1202 manisha 45000 proofreader 2013

1203 masthanvali 40000 technicalwriter 2014

1204 kiran 40000 hradmin 2014

[root@g12-1 ~]#

匯入資料進表

hive> load data local inpath '/tmp/sample.txt' overwrite into table employee;

loading data to table db1.employee

table db1.employee stats: [numfiles=1, numrows=0, totalsize=150, rawdatasize=0]

oktime taken: 0.354 seconds

hive> select * from employee;

ok1201 gopal 45000 technicalmanager 2013

1202 manisha 45000 proofreader 2013

1203 masthanvali 40000 technicalwriter 2014

1204 kiran 40000 hradmin 2014

time taken: 0.094 seconds, fetched: 4 row(s)

hive>

hiveql

select...where

hive> select * from employee where salary > 40000;
order by

hive> select * from employee order by eid;
group by

hive> select salary,count(salary) from employee group by salary;
select...join

hive> select c.id, c.name, c.age, o.amount from customers c join orders o on (c.id = o.customer_id);

分割槽表hive的資料庫是目錄,表也是目錄,分割槽表表目錄的子目錄

create table xx(...) partitioned by()

alter table *** add partitions() ...

load data local inpath ... into table *** partions (...);

bucket表(桶表)

create table ***(...)  ... clustered by (filename) into n buckets;    

桶表是資料檔案.hash

hiveql調優

1)explain 解釋執行計畫

explain extended select count(*) from employee;

explain formatted select count(*) from employee;

2)啟用limit調優,避免全表掃瞄,使用抽樣機制

select * from employee limit 1,2;

配置hive.limite.optimize.enable=true

3)join

使用map端鏈結(/*+ streamtable(table) */)

連線查詢表的大小是從左至右一次增長。

4)設定本地模式,在單台機器上處理所有任務

使用小資料情況

hive.exec.mode.local.auto=true     //預設false

hive> set hive.exec.mode.local.auto=true;

...    

hadoop hive基本操作

hive 基本操作 命令 hive shell hive service cli 進入shell後 1.設定顯示當前database和顯示列欄位 set hive.cli.print.current.db true 顯示當前db set hive.cli.print.headers true 顯示列...

鍊錶的基本操

實現鍊錶的增加 刪除 查詢和反轉 class link public void display class linklist 插入頭節點 public void insertfirst int data 刪除頭結點 public link deletefirst 查詢 public link fin...

Hadoop HIVE 資料表 使用

3 使用 3.1 資料匯入 3.1.1 可以使用命令列匯入,也可以直接上傳到hdfs的特定目錄 3.1.2 格式問題 3.1.2.1 缺失 不合法字段預設值為null 3.1.2.2 最好資料是格式化的,不要缺失字段 3.1.3 從hdfs其他目錄匯入 3.1.3.1 hadoop fs put o...