真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Hive中有哪些數(shù)據(jù)類型

這篇文章給大家分享的是有關(guān)Hive中有哪些數(shù)據(jù)類型的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

創(chuàng)新互聯(lián)專注于龍華網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供龍華營(yíng)銷型網(wǎng)站建設(shè),龍華網(wǎng)站制作、龍華網(wǎng)頁設(shè)計(jì)、龍華網(wǎng)站官網(wǎng)定制、微信小程序定制開發(fā)服務(wù),打造龍華網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供龍華網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

1、Hive 數(shù)據(jù)類型

1.1、基本數(shù)據(jù)類型

Hive中有哪些數(shù)據(jù)類型

對(duì)于Hive的String類型相當(dāng)于數(shù)據(jù)庫的varchar類型,該類型是一個(gè)可變的字符串,不過它不能聲明其中最多能存儲(chǔ)多
少個(gè)字符,理論上它可以存儲(chǔ)2GB的字符數(shù)。

1.2 、集合數(shù)據(jù)類型

Hive中有哪些數(shù)據(jù)類型

Hive有三種復(fù)雜數(shù)據(jù)類型ARRAY、MAP 和 STRUCT。ARRAY和MAP與Java中的Array和Map類似,而STRUCT與C語言中的
Struct類似,它封裝了一個(gè)命名字段集合,復(fù)雜數(shù)據(jù)類型允許任意層次的嵌套。

案例實(shí)操:

//1、假設(shè)某表有如下一行,我們用JSON格式來表示其數(shù)據(jù)結(jié)構(gòu)。在Hive下訪問的格式為
{
    "name": "kinglong",
    "friends": ["ZYL" , "WJM"],       //列表Array, 
    "children": {                     //鍵值Map,
        "xiao chen": 2,
        "xiaoxiao chen": 1
    }
    "address": {                     //結(jié)構(gòu)Struct,
        "street": "wan guo cheng",
        "city": "chang sha",
        "email": "kinglong2333@163.com"
    }
}
//2、基于上述數(shù)據(jù)結(jié)構(gòu),我們?cè)贖ive里創(chuàng)建對(duì)應(yīng)的表,并導(dǎo)入數(shù)據(jù)。

創(chuàng)建本地測(cè)試文件test.txt

kinglong,ZYL_WJM,xiao chen:2_xiaoxiao chen:1,wan guo cheng_chang sha_kinglong2333@163.com
wujiaoxin,LWH_WQ,xiao wu:3_xiaoxiao wu:2,kai fu_changsha_233333@163.com

注意:MAP,STRUCT和ARRAY里的元素間關(guān)系都可以用同一個(gè)字符表示,這里用“_”。
//3、Hive上創(chuàng)建測(cè)試表test

create table test(
name string,
friends array,
children map,
address struct
)
row format delimited fields terminated by ','	-- 指定各字段之間用什么分隔開
collection items terminated by '_'		--集合數(shù)據(jù)類型每條數(shù)據(jù)之間用什么分隔開
map keys terminated by ':'			-- map數(shù)據(jù)類型k,v之間用什么分隔開
lines terminated by '\n';			-- 每條數(shù)據(jù)之間用什么分隔開(默認(rèn)就是換行符)
//4、導(dǎo)入文本數(shù)據(jù)到測(cè)試表
hive (default)> load data local inpath '/opt/module/hive/datas/test.txt' into table test;

//5、訪問三種集合列里的數(shù)據(jù),以下分別是ARRAY,MAP,STRUCT的訪問方式
hive (default)> select friends[1],children['xiao chen'],address.city from test
where name="kinglong";
OK
_c0     _c1     city
WJM    2      chang sha
Time taken: 0.076 seconds, Fetched: 1 row(s)

1.3、類型轉(zhuǎn)換

    Hive的原子數(shù)據(jù)類型是可以進(jìn)行隱式轉(zhuǎn)換的,類似于Java的類型轉(zhuǎn)換,例如某表達(dá)式使用INT類型,TINYINT會(huì)自
動(dòng)轉(zhuǎn)換為INT類型,但是Hive不會(huì)進(jìn)行反向轉(zhuǎn)化,例如某表達(dá)式使用TINYINT類型,INT不會(huì)自動(dòng)轉(zhuǎn)換為TINYINT類型,
它會(huì)返回錯(cuò)誤,除非使用CAST操作。
1)隱式類型轉(zhuǎn)換規(guī)則如下
(1)任何整數(shù)類型都可以隱式地轉(zhuǎn)換為一個(gè)范圍更廣的類型,如TINYINT可以轉(zhuǎn)換成INT,INT可以轉(zhuǎn)換成BIGINT。
(2)所有整數(shù)類型、FLOAT和STRING類型都可以隱式地轉(zhuǎn)換成DOUBLE。
(3)TINYINT、SMALLINT、INT都可以轉(zhuǎn)換為FLOAT。
(4)BOOLEAN類型不可以轉(zhuǎn)換為任何其它的類型。

2)可以使用CAST操作顯示進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換
例如CAST('1' AS INT)將把字符串'1' 轉(zhuǎn)換成整數(shù)1;如果強(qiáng)制類型轉(zhuǎn)換失敗,如執(zhí)行CAST('X' AS INT),表達(dá)式返
回空值 NULL。

Hive中有哪些數(shù)據(jù)類型

2、DDL數(shù)據(jù)定義

2.1、庫的操作

一.創(chuàng)建庫:
	CREATE DATABASE [IF NOT EXISTS] 庫名
		#IF NOT EXISTS :如果庫不存在則創(chuàng)建庫。如果庫存在則不創(chuàng)建。
		#注意:如果不加該內(nèi)容。庫存在時(shí)就會(huì)報(bào)錯(cuò)
	[COMMENT 庫的描述信息]
		#comment用來添加庫的描述信息
	[LOCATION hdfs_path]
		#localtion : 指定庫在hdfs上的路徑(如果不指定則放在默認(rèn)的路徑下-配置文件中配置的路徑)
	[WITH DBPROPERTIES (name=value, ...)];
		#WITH DBPROPERTIES : 給庫添加屬性。
		#注意:name和value都是string
		
二.案例:
	create database if not exists db2
	comment 'this is db2'
	location '/db2.db'
	with dbproperties('version'='1.0');


三.對(duì)庫的操作

	1.查看所有的庫:
		show databases;
		
	2.選庫
		use 庫名;
		
	3.查看庫的信息(extended:可以查看庫的屬性內(nèi)容)
		desc database [extended] 庫名;
		
	4.修改庫(只能修改屬性)
		alter database 庫名 set dbproperties('name'='value');
		
	5.刪庫(cascade :如果庫為非空必須使用該字段才能刪庫)
		#if exists :如果庫存在則刪除。如果不加該字段庫不存在則會(huì)報(bào)錯(cuò)
		drop database [if exists] 庫名 [cascade]

2.2、表的操作

一 創(chuàng)建表
	CREATE [EXTERNAL] TABLE [IF NOT EXISTS] 表名 
		#EXTERNAL :加上該字段該表為外部表。不加則為內(nèi)部表(管理表)
		#IF NOT EXISTS :如果表不存在則創(chuàng)建表存在則不創(chuàng)建。如果不加該字段表存在則報(bào)錯(cuò)
	[(字段名 字段類型 [COMMENT 字段的描述信息], ...)] 
	[COMMENT 表的描述信息] 
	[PARTITIONED BY (字段名 字段類型 [COMMENT 字段描述信息], ...)] 
		#PARTITIONED BY :指定分區(qū)字段(分區(qū)表)
	[CLUSTERED BY (字段名1, 字段名2, ...) 
		#CLUSTERED BY :指定分桶字段(分桶表)
	[SORTED BY (字段名 [ASC|DESC], ...)] INTO 分桶的數(shù)量 BUCKETS] 
		#SORTED BY :在添加數(shù)據(jù)時(shí)按照指定字段進(jìn)行排序(幾乎不用)
	[ROW FORMAT row_format] 
		delimited fields terminated by ',' #指定各字段之間用什么分隔開
		collection items terminated by '_'  #集合數(shù)據(jù)類型每條數(shù)據(jù)之間用什么分隔開
		map keys terminated by ':' #map數(shù)據(jù)類型k,v之間用什么分隔開
		lines terminated by '\n';#每條數(shù)據(jù)之間用什么分隔開(默認(rèn)就是換行符)
	[STORED AS 存儲(chǔ)的類型] 
		#STORED AS:指定存儲(chǔ)文件(表中的數(shù)據(jù))的類型。默認(rèn)是TextFile
	[LOCATION 表的路徑]
	[TBLPROPERTIES (name=value, ...)]
		#給表添加屬性。注意:name和value都是string
	[AS sql查詢語句]
		#將查詢的結(jié)果創(chuàng)建成一張表
	[LIKE 表名]
		#允許用戶復(fù)制現(xiàn)有的表(like后面的表)結(jié)構(gòu),但是不復(fù)制數(shù)據(jù)
		
		
二 創(chuàng)建表案例
	create table if not exists person(
	id int comment 'this is id',
	name string comment 'this is name'
	)
	comment 'this is person'
	row format delimited fields terminated by '\t'
	location '/person'
	tblproperties('version'='1.0');
-----------------------------------------------------
2.1導(dǎo)入數(shù)據(jù)
	load data [local] inpath '/opt/module/hive/datas/student.txt' into table person;
	#[local] :如果不加local地址為HDFS。如果加了Local地址為本地
-----------------------------------------------------
2.2 like
	create table if not exists person2
	like person;
-----------------------------------------------------
2.3 as
	create table if not exists person3
	as
	select * from person where id < 1010;

-----------------------------------------------------
2.4創(chuàng)建外部表和管理表
	create external table if not exists ext_tbl(
	id int,
	name string
	)
	row format delimited fields terminated by '\t';


	create table if not exists man_tbl(
	id int,
	name string
	)
	row format delimited fields terminated by '\t';

注意:外部表刪除表時(shí)只會(huì)刪除元數(shù)據(jù)。管理表刪除表時(shí)會(huì)元數(shù)據(jù)和數(shù)據(jù)會(huì)被一同刪除。
-----------------------------------------------------

2.5 外部表和管理表相互轉(zhuǎn)換
	alter table 表名 set tblproperties('EXTERNAL'='TRUE/FALSE');
	注意:屬性的內(nèi)容一定要大寫。


三 操作表:
	1.查看表信息(formatted :可以查看更詳細(xì)的內(nèi)容)
		desc [formatted] 表名;
		
	2.刪除表
		drop table 表名;
	
	3.修改表的名字
		alter table 表名 rename to 新表名;
		
	4.更新列名
		ALTER TABLE 表名 CHANGE [COLUMN] 
		舊列名 新列名 列的類型 [COMMENT 列的描述信息] [FIRST|AFTER 列名]
		
	4.更新列的類型
		ALTER TABLE 表名 CHANGE [COLUMN] 
		列名 列名 新的列的類型 [COMMENT 列的描述信息] [FIRST|AFTER 列名]
		注意:修改類型一定要符合隱式轉(zhuǎn)換否則會(huì)報(bào)錯(cuò)。
		
	5.增加列
	 ALTER TABLE 表名 ADD COLUMNS (字段名 字段類型 [COMMENT 字段描述信息], ...) 
	 
	6.替換列
	 ALTER TABLE 表名 REPLACE COLUMNS (字段名 字段類型 [COMMENT 字段描述信息], ...) 
	 
	 注意:①如果替換的列少于被替換的列,那么按照順序進(jìn)行替換。沒有被替換的列被直接刪除。
		   ②替換列時(shí)一定要注意數(shù)據(jù)類型。(能隱式轉(zhuǎn)換的可以替換否則報(bào)錯(cuò))
	
	
	7、清空表(只能清空管理表--不是刪表而是刪除數(shù)據(jù))
		truncate table 表名;

感謝各位的閱讀!關(guān)于“Hive中有哪些數(shù)據(jù)類型”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!


當(dāng)前題目:Hive中有哪些數(shù)據(jù)類型
本文路徑:http://weahome.cn/article/ijcspj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部