日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hive 导出json格式 文件_Hive 系列 之 基本操作合集

發布時間:2025/3/8 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hive 导出json格式 文件_Hive 系列 之 基本操作合集 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

下面是本課程概覽:

(1)hive系列之簡介,安裝,beeline和hiveserver2

(2)hive系列之基本操作

(3)hive系列之udf

(4)hive系列之二級分區和動態分區

(5)hive系列之分桶表

(6)hive系列之常用函數

(7)hive系列之系統講解開窗函數

(8)hive系列之存儲格式及常用壓縮格式

(9)hive系列之數據倉庫建模理論

(10)hive系列之數據倉庫建模-維度表和事實表

(11)hive系列之數據倉庫建模-退化維度和緩慢變化維

(12)hive系列之常用企業性能優化1

(13)hive系列之常用企業性能優化2

(14)hive系列之常用企業性能優化3

今天是第二講,Hive 的基本操作

今天的內容比較多,也比較枯燥,盡可能對著操作一遍,加深認識

01

數據庫相關

1.創建數據庫

create database db_hive;

create database if not exists db_hive;

2.創建數據庫到指定目錄下

create database if not exists db_hive_03 location '/user/wangkai/hive/warehouse/db_hive03.db';

3.顯示當前所有的數據庫

show databases;

4.查看數據庫描述

desc database db_hive;

5.刪除數據庫就不說了,很危險

02

數據類型

1、基本類型

這里著重說一下 TIMESTAMP

TIMESTAMP 類型的主要作用是在數據比較的效率上比較高

TIMESTAMP 類型 ,其對應的格式為:yyyy-MM-dd HH:MM:SS,從文件中導入時,必須滿足這個格式的才能導入,否則顯示為null

比如現在建一個表

create table dw.t_date (

t1 date,

t2 timestamp

)

comment '日期測試表'

row format delimited

fields terminated by ',';

創建文件提交到 hdfs 上

文件內容:

2019-09-01,2019-09-01 11:12:00

2019-08-01,2019-09-01 12:00

加載到表中

LOAD DATA INPATH '/tmp/datetest/date.txt' into TABLE dw.t_date;

最終t2不滿足格式,所以顯示了null

Hive 中比較常用的時間相關的udf :

unix_timestamp() 返回當前的時間戳

unix_timestamp('2019-09-01 11:10:10') 返回指定日期的時間戳

from_unixtime(1567307471) 返回 yyyy-MM-dd HH:MM:SS 格式的字符串

2、復雜類型

ARRAY、Map、struct、union,這些復雜類型是由基礎類型構成的

(1) Array

表示數組,是具有相同類型的變量的集合,這些變量稱為數組的元素,每個元素都有下標,從0開始

如下,我們建一張 person 表,名字、工作地點、愛好

create table dw.person(

name string,

work_locations array<string>,

other_info map<string,string>,

other_info2 struct<one:string,two:int>

)

row format delimited

fields terminated by ','

collection items terminated by '|'

map keys terminated by ':';

字段的分隔符是 ,

集合(數組和map)元素的分隔符是 |

map或者struct 的 鍵值對分隔符是 :

測試數據如下:

導入到表中

查詢第一個工作地點:

select name,work_locations[0] from dw.person;

(2) Map

是一組鍵值對元組集合,使用數組表示法,map['first'] 可以獲取值

比如上面的表中,查詢性別

select name,other_info['sex'] from dw.person;

(3)Struct

是不同類型元素的集合,可以用 點 描述符來取元素

select name,other_info2.one from dw.person;

03

內部表、外部表、分區表

1、內部表和外部表的區別

(1)未被 external 修飾的是內部表,被 external 關鍵字修飾的是外部表

(2)內部表由 Hive 自身管理,外部表由 HDFS 管理(也就是數據在別的目錄下,但元數據還是由 Hive 管理的)

(3)內部表數據的存儲位置是:hive.metastore.warehouse.dir(默認是:/user/hive/warehouse),外部表數據的存儲位置由自己制定

(4)刪除內部表會直接刪除元數據和存儲在表下面的數據,而刪除外部表只會刪除元數據,HDFS 上的數據并不會被刪除

2、分區表

為了對表進行合理的管理,以及提高查詢的效率,Hive 可以將表組織成分區,一個分區實際上就是一個目錄,一個表可以在多個維度上創建分區,分區之間的關系,就是目錄樹的關系。

就是在系統上創建文件夾,把分類數據放在不同的文件夾下,加快查詢速度。

比如創建日期和公司兩個分區,那么就可以指定查詢某個月某個公司的數據,而不同全表掃描

3、實戰

(1)內部表

上面建的dw.person 就是內部表,hive 會在 hdfs 文件上創建一個目錄,刪除表的時候,目錄下的數據也會被刪除

(2)外部表

使用關鍵字 external

create external table dw.t_test2 (

c1 string,

c2 string

)

如果沒有指定位置,hive 會生成一個目錄,如果指定了位置,那么不會創建目錄

create external table dw.t_test3 (

c1 string,

c2 string

)

location '/tmp/person';

刪除表,并不會刪除 hdfs 文件的

(3)分區表

create table dw.t_test4 (

c1 string,

c2 string

)

partitioned by (appId string)

新增分區

alter table dw.t_test4 add partition(appId='app');

會在hdfs上新增一個目錄

(4)外部分區表

顧名思義,即是外部表,又是分區表

create external table dw.t_test5 (

c1 string,

c2 string

)

partitioned by (appId string);

給外部分區表添加記錄

alter table dw.t_test4 add partition(appId='app') location '/tmp/test1';

04

其他建表方式

1.用查詢出來的數據建表

create table IF NOT EXISTS dw.log_20170629_2

AS select ip,user from dw.log_20170629;

2.僅僅創建已有表的表結構

create table IF NOT EXISTS dw.log_20170630

like dw.log_20170629;

05

加載和導出數據

1.加載數據

(1)這個命令是從本地拷貝文件到集群上,如果文件存在,則會重命名新增一份文件

load data local inpath '/opt/datas/student.txt' into table dw.student;

(2)加載數據并覆蓋原有數據,會刪除原有文件,再拷貝

load data local inpath '/opt/datas/student.txt' overwrite into table dw.student;

(3)加載數據到分區表

load data local inpath '/home/hadoop/data/emp.txt' into table dw.emp_partition partition (month='201509');

(4)加載hdfs數據,從hdfs移動數據到集群上

load data inpath '/opt/datas/student.txt' into table dw.student;

2.導出數據

(1)導出文件到本地目錄

insert overwrite local directory '/home/hadoop/data/hive_exp_emp2'

ROW FORMAT DELIMITED FIELDS TERMINATED BY 't'

select * from default.emp;

(2)hive命令

bin/hive -e "select * from default.emp;" > /opt/datas/exp_res.txt

(3)導出到hdfs中

insert overwrite directory '/user/wangkai/hive/hive_exp_emp'

ROW FORMAT DELIMITED FIELDS TERMINATED BY 't' COLLECTION ITEMS TERMINATED BY 'n'

下一篇是 hive 的 udf ,持續關注 kk大數據 噢

總結

以上是生活随笔為你收集整理的hive 导出json格式 文件_Hive 系列 之 基本操作合集的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。