国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

你會Hive表的基本操作嗎?

大數據
create table語句遵從sql語法習慣,只不過Hive的語法更靈活。例如,可以定義表的數據文件存儲位置,使用的存儲格式等。

[[381808]]

本文轉載自微信公眾號「Java大數據與數據倉庫」,作者柯同學。轉載本文請聯系Java大數據與數據倉庫公眾號。   

1. 創建表

create table語句遵從sql語法習慣,只不過Hive的語法更靈活。例如,可以定義表的數據文件存儲位置,使用的存儲格式等。

  1. create table if not exists test.user1( 
  2. name string comment 'name'
  3. salary float comment 'salary'
  4. address struct<country:string, city:string> comment 'home address' 
  5. comment 'description of the table' 
  6. partitioned by (age int
  7. row format delimited fields terminated by '\t' 
  8. stored as orc; 

沒有指定external關鍵字,則為管理表,跟mysql一樣,if not exists如果表存在則不做操作,否則則新建表。comment可以為其做注釋,分區為age年齡,列之間分隔符是\t,存儲格式為列式存儲orc,存儲位置為默認位置,即參數hive.metastore.warehouse.dir(默認:/user/hive/warehouse)指定的hdfs目錄。

2. 拷貝表

使用like可以拷貝一張跟原表結構一樣的空表,里面是沒有數據的。

  1. create table if not exists test.user2 like test.user1; 

3. 查看表結構

通過desc [可選參數] tableName命令查看表結構,可以看出拷貝的表test.user1與原表test.user1的表結構是一樣的。

  1. hive> desc test.user2; 
  2. OK 
  3. name                    string                  name                 
  4. salary                  float                   salary               
  5. address                 struct<country:string,city:string>  home address         
  6. age                     int                                          
  7.  
  8. # Partition Information          
  9. # col_name                data_type               comment              
  10.  
  11. age                     int          

也可以加formatted,可以看到更加詳細和冗長的輸出信息。

  1. hive> desc formatted test.user2; 
  2. OK 
  3. # col_name                data_type               comment              
  4.  
  5. name                    string                  name                 
  6. salary                  float                   salary               
  7. address                 struct<country:string,city:string>  home address         
  8.  
  9. # Partition Information          
  10. # col_name                data_type               comment              
  11.  
  12. age                     int                                          
  13.  
  14. # Detailed Table Information          
  15. Database:               test                      
  16. Owner:                  hdfs                      
  17. CreateTime:             Mon Dec 21 16:37:57 CST 2020      
  18. LastAccessTime:         UNKNOWN                   
  19. Retention:              0                         
  20. Location:               hdfs://nameservice2/user/hive/warehouse/test.db/user2     
  21. Table Type:             MANAGED_TABLE             
  22. Table Parameters:          
  23.     COLUMN_STATS_ACCURATE   {\"BASIC_STATS\":\"true\"
  24.     numFiles                0                    
  25.     numPartitions           0                    
  26.     numRows                 0                    
  27.     rawDataSize             0                    
  28.     totalSize               0                    
  29.     transient_lastDdlTime   1608539877           
  30.  
  31. # Storage Information          
  32. SerDe Library:          org.apache.hadoop.hive.ql.io.orc.OrcSerde     
  33. InputFormat:            org.apache.hadoop.hive.ql.io.orc.OrcInputFormat   
  34. OutputFormat:           org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat      
  35. Compressed:             No                        
  36. Num Buckets:            -1                        
  37. Bucket Columns:         []                        
  38. Sort Columns:           []                        
  39. Storage Desc Params:          
  40.     field.delim             \t                   
  41.     serialization.format    \t            

4. 刪除表

這跟sql中刪除命令drop table是一樣的:

  1. drop table if exists table_name; 

對于管理表(內部表),直接把表徹底刪除了;對于外部表,還需要刪除對應的hdfs文件才會徹底將這張表刪除掉,為了安全,通常hadoop集群是開啟回收站功能的,刪除外表表的數據就在回收站,后面如果想恢復也是可以恢復的,直接從回收站mv到hive對應目錄即可。

5. 修改表

大多數表屬性可以通過alter table來修改。

5.1 表重命名

  1. alter table test.user1 rename to test.user3; 

5.2 增、修、刪分區

增加分區使用命令alter table table_name add partition(...) location hdfs_path

  1. alter table test.user2 add if not exists 
  2. partition (age = 101) location '/user/hive/warehouse/test.db/user2/part-0000101' 
  3. partition (age = 102) location '/user/hive/warehouse/test.db/user2/part-0000102' 

修改分區也是使用alter table ... set ...命令

  1. alter table test.user2 partition (age = 101) set location '/user/hive/warehouse/test.db/user2/part-0000110' 

刪除分區命令格式是alter table tableName drop if exists partition(...)

  1. alter table test.user2 drop if exists partition(age = 101) 

5.3 修改列信息

可以對某個字段進行重命名,并修改位置、類型或者注釋:

修改前:

  1. hive> desc user_log; 
  2. OK 
  3. userid                  string                                       
  4. time                    string                                       
  5. url                     string             

修改列名time為times,并且使用after把位置放到url之后,本來是在之前的。

  1. alter table test.user_log 
  2. change column time times string 
  3. comment 'salaries' 
  4. after url; 

再來看表結構:

  1. hive> desc user_log; 
  2. OK 
  3. userid                  string                                       
  4. url                     string                                       
  5. times                   string                  salaries             

time -> times,位置在url之后。

5.4 增加列

hive也是可以添加列的:

  1. alter table test.user2 add columns ( 
  2. birth date comment '生日'
  3. hobby string comment '愛好' 
  4. ); 

5.5 刪除列

刪除列不是指定列刪除,需要把原有所有列寫一遍,要刪除的列排除掉即可:

  1. hive> desc test.user3; 
  2. OK 
  3. name                    string                  name                 
  4. salary                  float                   salary               
  5. address                 struct<country:string,city:string>  home address         
  6. age                     int                                          
  7.  
  8. # Partition Information          
  9. # col_name                data_type               comment              
  10.  
  11. age                     int               

如果要刪除列salary,只需要這樣寫:

  1. alter table test.user3 replace columns( 
  2. name string, 
  3. address struct<country:string,city:string> 
  4. ); 

這里會報錯:

  1. FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Replacing columns cannot drop columns for table test.user3. SerDe may be incompatible 

這張test.user3表是orc格式的,不支持刪除,如果是textfile格式,上面這種replace寫法是可以刪除列的。通常情況下不會輕易去刪除列的,增加列倒是常見。

5.6 修改表的屬性

可以增加附加的表屬性,或者修改屬性,但是無法刪除屬性:

  1. alter table tableName set tblproperties( 
  2.     'key' = 'value' 
  3. ); 

舉例:這里新建一張表:

  1. create table t8(time string,country string,province string,city string) 
  2. row format delimited fields terminated by '#'  
  3. lines terminated by '\n'  
  4. stored as textfile; 

這條語句將t8表中的字段分隔符'#'修改成'\t';

  1. alter table t8 set serdepropertyes('field.delim'='\t'); 

 

責任編輯:武曉燕 來源: Java大數據與數據倉庫
相關推薦

2019-05-07 15:49:27

AI人工智能藝術

2010-07-13 10:40:30

唐駿

2021-08-19 15:36:09

數據備份存儲備份策略

2021-06-04 09:09:05

FlutterFuchsia操作系統

2010-09-03 12:20:54

數據庫

2024-03-29 12:50:00

項目分層模型

2020-10-26 15:18:01

大數據APP軟件

2021-04-16 15:02:11

CAP理論分布式

2021-04-14 06:53:52

C# 修飾符 Public

2022-03-15 08:36:46

遞歸查詢SQL

2024-02-22 08:31:26

數據恢復工具MySQL回滾SQL

2012-06-20 10:47:25

Team Leader

2023-02-27 10:45:16

2012-06-20 15:01:25

iOS開發

2019-05-29 13:59:03

GitHub開源搜索功能

2012-04-24 09:54:14

WiFi

2021-09-13 07:23:52

Go Set 設計

2023-12-04 07:09:53

函數遞歸python

2024-05-14 08:19:54

點贊
收藏

51CTO技術棧公眾號

欧美性xxxxx极品娇小| 老司机久久99久久精品播放免费| 99www免费人成精品| 国产剧情久久久久久| 91最新国产视频| caopen在线视频| 国产婷婷一区二区| 久久亚裔精品欧美| 婷婷成人在线| 国产一区二区0| 欧美裸体一区二区三区| 欧美在线观看www| 西西裸体人体做爰大胆久久久| 色悠悠久久88| 超碰在线免费播放| 亚洲成av人片一区二区| 天堂中文视频在线| 国产一区在线精品| 欧美精品一区二区三区在线看午夜| 国产精品xxx在线观看| 伊人久久五月天| 欧美美女日韩| 亚洲欧美日韩中文视频| 福利写真视频网站在线| 亚洲欧洲日本mm| 成人写真福利网| 国产欧美一区二区三区四区| 精品网站在线看| 国产欧美日韩| 欧美一级大片在线观看| 亚洲精品在线播放| www.美女亚洲精品| 亚洲福利影视| 一区二区三区视频观看| 电影一区二区三| 国内精品久久久久影院一蜜桃| 中文一区二区完整视频在线观看| 日韩人妻精品一区二区三区| 三级成人在线视频| 国产精品第157页| 电影一区二区三区| 亚洲欧美一区二区三区四区 | 91视频免费在线观看| 五月天亚洲色图| 91夜夜揉人人捏人人添红杏| 欧美午夜视频| 五月天色婷婷综合| 手机在线免费看av| 久久网福利资源网站| 久久激情一区| 最近最新中文字幕在线| 久久精品小视频| 久久国内精品自在自线400部| 欧美国产视频日韩| 国产一区日韩二区欧美三区| 黄色激情网站| 91网站黄www| 欧美人与物videos另类| 亚洲欧洲制服丝袜| 成人在线观看a| 日韩在线播放一区二区| 黄色av网址在线免费观看| 欧美洲成人男女午夜视频| 一区二区三区午夜探花| 91精品在线观看入口| 浓精h攵女乱爱av| 欧美大胆人体bbbb| 欧洲激情综合| 日本不卡久久| 亚洲人xxxx| 国产人与zoxxxx另类91| 5566av亚洲| 欧美激情资源网| av在线中出| 日本一区精品| 久久国产精品免费精品3p| www.av一区视频| 日本一二三不卡| 成人不卡视频| 中日韩在线视频| 777久久久精品| 欧美日韩国产一区二区三区不卡 | **爰片久久毛片| 久久精品国产理论片免费| 中文字幕在线观看一区| 中文字幕在线视频久| 国产精品一 二 三| gogo久久日韩裸体艺术| 精品蜜桃传媒| 666欧美在线视频| 女人色偷偷aa久久天堂| 国产va免费精品高清在线观看| 国产老女人精品毛片久久| 成年人在线观看| 久久综合色一本| 欧美成人伊人久久综合网| 欧美二区视频| 亚洲pron| 久久99精品久久久久久青青日本 | 成人video亚洲精品| 91久久中文字幕| 精品久久久在线观看| 色婷婷综合久久久久中文字幕 | 99久久99久久精品国产片果冻| 亚洲图片88| 精品国产1区2区3区| 伊人天天综合| 理论不卡电影大全神| 亚洲三级一区| 欧美成人剧情片在线观看| 国产亚洲精品精华液| 成人在线免费观看91| 国产精品扒开腿做爽爽爽视频 | 午夜一级在线看亚洲| 麻豆tv入口在线看| 东北少妇不带套对白| 91国内免费在线视频| 日韩视频免费| 99久热re在线精品996热视频| 亚洲精品999| 天天干在线影院| 欧美精品v日韩精品v韩国精品v| 1769国产精品视频| 日本xxx免费| 日韩精品在线一区| 亚洲xxx拳头交| 制服丝袜中文字幕亚洲| 亚洲国产精品日韩专区av有中文 | 国产嫩草影院久久久久| 秋霞影院一区二区| 日本久久久精品视频| 3d动漫啪啪精品一区二区免费| 在线播放日韩专区| 欧美成人vr18sexvr| 欧美三级在线看| 欧美日韩亚洲天堂| 欧美一级精品| 美女一区2区| 国产精品va视频| xxxxx.日韩| 亚洲综合在线电影| 超碰一区二区| 一二区成人影院电影网| 国产高清自产拍av在线| 日韩欧美亚洲一区| av一区二区在线看| 久久艳片www.17c.com| 亚洲乱码国产乱码精品精的特点 | 天堂av免费看| 亚洲人成小说| 电影91久久久| 欧美日韩国产一区二区三区不卡| 三级欧美韩日大片在线看| 一本大道久久a久久综合| 99精品国产一区二区青青牛奶| 成人国产精品视频| 日韩一级二级三级| 国产精品久久久久久久久婷婷| 久久.com| 伊人久久噜噜噜躁狠狠躁| 欧美aa在线视频| 91精品国产品国语在线不卡| 91在线免费网站| 最新中文字幕在线观看| 国产精品免费大片| 亚洲一区二区视频在线| 国产精华一区| 国产乱理伦片a级在线观看| 久久久精品一区二区毛片免费看| 91日韩免费| 99riav视频在线观看| 丁香婷婷成人| 播五月开心婷婷综合| 67194成人在线观看| 国产精品入口免费视频一| 日韩精品www| 日本视频久久久| 日韩三级电影免费观看| 超碰色偷偷男人的天堂| 激情欧美一区二区三区黑长吊| 欧美偷拍综合| 国产福利一区在线观看| 欧美一区二区三区激情视频| 久久久成人网| 精品福利免费观看| 国产成人在线视频| 青青草精品视频在线| 久久久久久亚洲精品| 欧美在线观看日本一区| 3d动漫精品啪啪一区二区三区免费| 91麻豆国产语对白在线观看| 青草在线视频| 一区二区三区欧美日韩| 亚洲精品成人a8198a| 色棕色天天综合网| 天堂在线一区二区| 久久精品男人天堂av| 国产91在线观看| 成人不卡免费av| 在线a欧美视频|