精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Hive為什么這么受歡迎?看完Hive架構以及應用介紹,你就明白了!

大數據
Hive究竟是什么,為什么在Hadoop家族中占有這么重要的地位,本篇文章將圍繞Hive的體系結構(架構)、Hive的操作、Hive與Hbase的區別等對Hive進行全方面的闡述。

前言

Hive這個框架在Hadoop的生態體系結構中占有及其重要的地位,在實際的業務當中用的也非常多,可以說Hadoop之所以這么流行在很大程度上是因為Hive的存在。那么Hive究竟是什么,為什么在Hadoop家族中占有這么重要的地位,本篇文章將圍繞Hive的體系結構(架構)、Hive的操作、Hive與Hbase的區別等對Hive進行全方面的闡述。

在此之前,先給大家介紹一個業務場景,讓大家感受一下為什么Hive如此的受歡迎:

業務描述:統計業務表consumer.txt中北京的客戶有多少位?下面是相應的業務數據:

  1. id      city    name    sex            
  2. 0001    beijing zhangli man  
  3. 0002    guizhou lifang  woman  
  4. 0003    tianjin wangwei man  
  5. 0004    chengde wanghe  woman  
  6. 0005    beijing lidong  man  
  7. 0006    lanzhou wuting  woman  
  8. 0007    beijing guona   woman  
  9. 0008    chengde houkuo  man  

首先我先用大家所熟悉的MapReduce程序來實現這個業務分析,完整代碼如下:

  1. package IT; 
  2.  
  3. import java.io.IOException; 
  4. import java.net.URI; 
  5.  
  6. import org.apache.hadoop.conf.Configuration; 
  7. import org.apache.hadoop.fs.FSDataInputStream; 
  8. import org.apache.hadoop.fs.FileSystem; 
  9. import org.apache.hadoop.fs.Path; 
  10. import org.apache.hadoop.io.IOUtils; 
  11. import org.apache.hadoop.io.LongWritable; 
  12. import org.apache.hadoop.io.Text; 
  13. import org.apache.hadoop.mapreduce.Job; 
  14. import org.apache.hadoop.mapreduce.Mapper; 
  15. import org.apache.hadoop.mapreduce.Reducer; 
  16. import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; 
  17. import org.apache.hadoop.mapreduce.lib.input.TextInputFormat; 
  18. import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; 
  19. import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat; 
  20. import org.apache.hadoop.mapreduce.lib.partition.HashPartitioner; 
  21.  
  22. public class Consumer 
  23.     public static String path1 = "hdfs://192.168.80.80:9000/consumer.txt"
  24.     public static String path2 = "hdfs://192.168.80.80:9000/dir"
  25.     public static void main(String[] args) throws Exception 
  26.     { 
  27.           FileSystem fileSystem = FileSystem.get(new URI(path1) , new Configuration()); 
  28.           if(fileSystem.exists(new Path(path2))) 
  29.           { 
  30.               fileSystem.delete(new Path(path2), true); 
  31.           } 
  32.            
  33.           Job job = new Job(new Configuration(),"Consumer"); 
  34.           FileInputFormat.setInputPaths(job, new Path(path1)); 
  35.           job.setInputFormatClass(TextInputFormat.class); 
  36.           job.setMapperClass(MyMapper.class); 
  37.           job.setMapOutputKeyClass(Text.class); 
  38.           job.setMapOutputValueClass(LongWritable.class); 
  39.            
  40.           job.setNumReduceTasks(1); 
  41.           job.setPartitionerClass(HashPartitioner.class); 
  42.              
  43.           job.setReducerClass(MyReducer.class); 
  44.           job.setOutputKeyClass(Text.class); 
  45.           job.setOutputValueClass(LongWritable.class); 
  46.           job.setOutputFormatClass(TextOutputFormat.class); 
  47.           FileOutputFormat.setOutputPath(job, new Path(path2)); 
  48.           job.waitForCompletion(true); 
  49.           //查看執行結果 
  50.           FSDataInputStream fr = fileSystem.open(new Path("hdfs://hadoop80:9000/dir/part-r-00000")); 
  51.           IOUtils.copyBytes(fr, System.out, 1024, true); 
  52.      } 
  53.     public static class MyMapper extends Mapper<LongWritable, Text, Text, LongWritable> 
  54.     {       
  55.             public static long sum = 0L; 
  56.             protected void map(LongWritable k1, Text v1,Context context) throws IOException, InterruptedException 
  57.             { 
  58.                   String[] splited = v1.toString().split("\t"); 
  59.                   if(splited[1].equals("beijing")) 
  60.                   { 
  61.                       sum++; 
  62.                   } 
  63.             } 
  64.             protected void cleanup(Context context)throws IOException, InterruptedException 
  65.             { 
  66.                   String str = "beijing"
  67.                   context.write(new Text(str),new LongWritable(sum)); 
  68.             } 
  69.     } 
  70.     public static class MyReducer extends Reducer<Text, LongWritable, Text, LongWritable> 
  71.     { 
  72.             protected void reduce(Text k2, Iterable<LongWritable> v2s,Context context)throws IOException, InterruptedException 
  73.             { 
  74.                   for (LongWritable v2 : v2s) 
  75.                  { 
  76.                      context.write(k2, v2); 
  77.                  } 
  78.             }    
  79.     }    

MapReduce程序代碼運行結果如下: 

Hive為什么這么受歡迎?看完Hive架構以及應用介紹,你就明白了!

從運行結果可以看出:在consumer.txt業務表中,北京的客戶共有三位。下面我們將用Hive來實現相同的功能,即統計業務表consumer.txt中北京的客戶有多少位?

Hive操作如下: 

Hive為什么這么受歡迎?看完Hive架構以及應用介紹,你就明白了!

Hive運行結果如下:

  1. OK 
  2. beijing 3 
  3. Time taken: 19.768 seconds, Fetched: 1 row(s) 

到這里,是不是感覺Hive這個運行框架很神奇-----對于相同的業務邏輯只需要寫幾行Sql命令就可以獲取我們所需要的結果,這也恰恰是Hive為什么這么流行的原因,Hive的優勢主要體現在:

①Hive支持標準的SQL語法,免去了用戶編寫MapReduce程序的過程,大大減少了公司的開發成本

②Hive的出現可以讓那些精通SQL技能、但是不熟悉MapReduce 、編程能力較弱與不擅長Java語言的用戶能夠在HDFS大規模數據集上很方便地利用SQL 語言查詢、匯總、分析數據,畢竟精通SQL語言的人要比精通Java語言的多得多

③Hive是為大數據批量處理而生的,Hive的出現解決了傳統的關系型數據庫(MySql、Oracle)在大數據處理上的瓶頸

好了,上面通過一個簡單的小業務場景說明了Hive的巨大優勢,接下來將進入本篇文章的正題。

一:Hive體系結構(架構)的介紹

1、Hive的概念:

①Hive是為了簡化用戶編寫MapReduce程序而生成的一種框架,使用MapReduce做過數據分析的人都知道,很多分析程序除業務邏輯不同外,程序流程基本一樣。在這種情況下,就需要Hive這樣的用戶編程接口。Hive提供了一套類SQL的查詢語言,稱為QL,而在創造Hive框架的過程中之所以使用SQL實現Hive是因為大家對SQL語言非常的熟悉,轉換成本低,可以大大普及我們Hadoop用戶使用的范圍,類似作用的Pig就不是通過SQL實現的。

Hive是基于Hadoop的一個開源數據倉庫系統,可以將結構化的數據文件映射為一張數據庫表,并提供完整的sql查詢功能,Hive可以把SQL中的表、字段轉換為HDFS中的目錄、文件。

②Hive是建立在Hadoop之上的數據倉庫基礎構架、是為了減少MapReduce編寫工作的批處理系統,Hive本身不存儲和計算數據,它完全依賴于HDFS和MapReduce。Hive可以理解為一個客戶端工具,將我們的sql操作轉換為相應的MapReduce jobs,然后在Hadoop上面運行。

在開始為大家列舉的consumer.txt小業務當中,從編寫Sql到最后得出Beijing 3的分析結果實際上中間走的是MapReduce程序, 只不過這個MapReduce程序不用用戶自己編寫,而是由Hive這個客戶端工具將我們的sql操作轉化為了相應的MapReduce程序,下面是我們運行sql命令時顯示的相關日志:

  1. hive> select city,count(*) 
  2.     > from t4     
  3.     > where city='beijing' 
  4.     > group by city; 
  5. Total MapReduce jobs = 1 
  6. Launching Job 1 out of 1 
  7. Number of reduce tasks not specified. Estimated from input data size: 1 
  8. In order to change the average load for a reducer (in bytes): 
  9.   set hive.exec.reducers.bytes.per.reducer=<number> 
  10. In order to limit the maximum number of reducers: 
  11.   set hive.exec.reducers.max=<number> 
  12. In order to set a constant number of reducers: 
  13.   set mapred.reduce.tasks=<number> 
  14. Starting Job = job_1478233923484_0902, Tracking URL = http://hadoop22:8088/proxy/application_1478233923484_0902/ 
  15. Kill Command = /usr/local/hadoop/bin/hadoop job  -kill job_1478233923484_0902 
  16. Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 1 
  17. 2016-11-09 11:36:36,688 Stage-1 map = 0%,  reduce = 0% 
  18. 2016-11-09 11:36:42,018 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 1.21 sec 
  19. 2016-11-09 11:36:43,062 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 1.21 sec 
  20. 2016-11-09 11:36:44,105 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 1.21 sec 
  21. 2016-11-09 11:36:45,149 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 1.21 sec 
  22. 2016-11-09 11:36:46,193 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 1.21 sec 
  23. 2016-11-09 11:36:47,237 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 1.21 sec 
  24. 2016-11-09 11:36:48,283 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 1.21 sec 
  25. 2016-11-09 11:36:49,329 Stage-1 map = 100%,  reduce = 100%, Cumulative CPU 3.7 sec 
  26. 2016-11-09 11:36:50,384 Stage-1 map = 100%,  reduce = 100%, Cumulative CPU 3.7 sec 
  27. MapReduce Total cumulative CPU time: 3 seconds 700 msec 
  28. Ended Job = job_1478233923484_0902 
  29. MapReduce Jobs Launched:  
  30. Job 0: Map: 1  Reduce: 1   Cumulative CPU: 3.7 sec   HDFS Read: 419 HDFS Write: 10 SUCCESS 
  31. Total MapReduce CPU Time Spent: 3 seconds 700 msec 
  32. OK 
  33. beijing 3 
  34. Time taken: 19.768 seconds, Fetched: 1 row(s) 

從日志可以看出,Hive將我們的sql命令解析成了相應的MapReduce任務,最后得到了我們的分析結果。

③Hive可以認為是MapReduce的一個封裝、包裝。Hive的意義就是在業務分析中將用戶容易編寫、會寫的Sql語言轉換為復雜難寫的MapReduce程序,從而大大降低了Hadoop學習的門檻,讓更多的用戶可以利用Hadoop進行數據挖掘分析。

為了讓大家容易理解Hive的實質-------“Hive就是一個SQL解析引擎,將SQL語句轉化為相應的MapReduce程序”這句話,博主用一個圖示進行示例: 

Hive為什么這么受歡迎?看完Hive架構以及應用介紹,你就明白了!

從圖示可以看出,Hive從某種程度上講就是很多“SQL—MapReduce”框架的一個封裝,可以將用戶編寫的Sql語言解析成對應的MapReduce程序,最終通過MapReduce運算框架形成運算結果提交給Client。

2、Hive體系結構的介紹

下面是Hive的體系結構圖: 

Hive為什么這么受歡迎?看完Hive架構以及應用介紹,你就明白了!

Hive的體系結構可以分為以下幾個部分:

①用戶接口:包括shell命令、Jdbc/Odbc和WebUi,其中最常用的是shell這個客戶端方式對Hive進行相應操作

②Hive解析器(驅動Driver):Hive解析器的核心功能就是根據用戶編寫的Sql語法匹配出相應的MapReduce模板,形成對應的MapReduce job進行執行。

③Hive元數據庫(MetaStore):Hive將表中的元數據信息存儲在數據庫中,如derby(自帶的)、Mysql(實際工作中配置的),Hive中的元數據信息包括表的名字、表的列和分區、表的屬性(是否為外部表等)、表的數據所在的目錄等。Hive中的解析器在運行的時候會讀取元數據庫MetaStore中的相關信息。

在這里和大家說一下為什么我們在實際業務當中不用Hive自帶的數據庫derby,而要重新為其配置一個新的數據庫Mysql,是因為derby這個數據庫具有很大的局限性:derby這個數據庫不允許用戶打開多個客戶端對其進行共享操作,只能有一個客戶端打開對其進行操作,即同一時刻只能有一個用戶使用它,自然這在工作當中是很不方便的,所以我們要重新為其配置一個數據庫。

④Hadoop:Hive用HDFS進行存儲,用MapReduce進行計算-------Hive這個數據倉庫的數據存儲在HDFS中,業務實際分析計算是利用MapReduce執行的。

從上面的體系結構中可以看出,在Hadoop的HDFS與MapReduce以及MySql的輔助下,Hive其實就是利用Hive解析器將用戶的SQl語句解析成對應的MapReduce程序而已,即Hive僅僅是一個客戶端工具,這也是為什么我們在Hive的搭建過程中沒有分布與偽分布搭建的原因。(Hive就像是劉邦一樣,合理的利用了張良、韓信與蕭何的輔助,從而成就了一番大事!)

3、Hive的運行機制

Hive的運行機制如下圖所示: 

Hive為什么這么受歡迎?看完Hive架構以及應用介紹,你就明白了!

Hive的運行機制正如圖所示:創建完表之后,用戶只需要根據業務需求編寫Sql語句,而后將由Hive框架將Sql語句解析成對應的MapReduce程序,通過MapReduce計算框架運行job,便得到了我們最終的分析結果。

在Hive的運行過程中,用戶只需要創建表、導入數據、編寫Sql分析語句即可,剩下的過程將由Hive框架自動完成,而創建表、導入數據、編寫Sql分析語句其實就是數據庫的知識了,Hive的運行過程也說明了為什么Hive的存在大大降低了Hadoop的學習門檻以及為什么Hive在Hadoop家族中占有著那么重要的地位。

二:Hive的操作

Hive的操作對于用戶來說實際上就是表的操作、數據庫的操作。下面我們將圍繞兩個方面進行介紹:

1、Hive的基本命令.

啟動hive命令行:

  1. $>hive/bin/hive 
  2.     $hive>show databases ;                              -- 顯式數據庫 
  3.     $hive>create database mydb ;                        -- 創建數據庫 
  4.     $hive>use mydb ;                                    -- 使用庫 
  5.     $hive>create table custs(id int , name string) ;    -- 建表 
  6.     $hive>desc custs ;                                  -- 查看表結構 
  7.     $hive>desc formatted custs ;                        -- 查看格式化表結構 
  8.     $hive>insert into custs(id,namevalues(1,'tom');   -- 插入數據,轉成mr. 
  9.     $hive>select * from custs ;                         -- 查詢,沒有mr 
  10.     $hive>select * from custs order by id desc ;        -- 全排序,會生成mr. 
  11.     $hive>exit ;                                        -- 退出終端 
  12.  
  13.  
  14. 查看mysql中的元信息: 
  15.     select * from dbs ;                                 -- 存放庫信息 
  16.     select * from tbls ;                                -- 存放表信息 

2、Hive表------內部表、外部表、分區表的創建

所謂內部表就是普通表,創建語法格式為: 

Hive為什么這么受歡迎?看完Hive架構以及應用介紹,你就明白了!

實際操作: 

Hive為什么這么受歡迎?看完Hive架構以及應用介紹,你就明白了!

外部表(external table)的創建語法格式為: 

Hive為什么這么受歡迎?看完Hive架構以及應用介紹,你就明白了!

注意:最后一行寫到的是目錄dir,文件就不用寫了,Hive表會自動到dir目錄下讀取所有的文件file

我在實際的操作過程當中發現,location關聯到的目錄下面必須都是文件,不能含有其余的文件夾,不然讀取數據的時候會報錯。 

Hive為什么這么受歡迎?看完Hive架構以及應用介紹,你就明白了!

實際操作: 

Hive為什么這么受歡迎?看完Hive架構以及應用介紹,你就明白了!

內部表與外部表的區別:

  • 內部表在加載數據的過程中,實際數據會被移動到數據倉庫目錄中(hive.metastore.warehouse.dir),之后用戶對數據的訪問將會直接在數據倉庫目錄中完成;刪除內部表時,內部表中的數據和元數據信息會被同時刪除。
  • 外部表在加載數據的過程中,實際數據并不會被移動到數據倉庫目錄中,只是與外部表建立一個鏈接(相當于文件的快捷方式一樣);刪除外部表時,僅刪除該鏈接。

補充:在工作中發現,對于外部表,即使hive中的表刪除了,但是在HDFS中表的location仍然存在。

分區表的概念:指的是我們的數據可以分區,即按照某個字段將文件劃分為不同的標準,分區表的創建是通過在創建表時啟用partitioned by來實現的。

分區表的創建語法格式為: 

Hive為什么這么受歡迎?看完Hive架構以及應用介紹,你就明白了!

注意:分區表在加載數據的過程中要指定分區字段,否則會報錯,正確的加載方式如下:

  1. load data local inpath ‘/usr/local/consumer.txt’ into table t1 partition (day=2) ; 

其余的操作和內部表、外部表是一樣的。

實際操作: 

Hive為什么這么受歡迎?看完Hive架構以及應用介紹,你就明白了!

參考2:

  1. CREATE EXTERNAL TABLE `fdm_buffalo_3_5_task_exec_time`( 
  2.   `task_id`      int COMMENT '任務id',  
  3.   `task_version` string COMMENT '任務版本',  
  4.   `exec_time`    string COMMENT '平均執行時長'
  5. PARTITIONED BY (  
  6.   `dt` string) 
  7. ROW FORMAT DELIMITED  
  8.   FIELDS TERMINATED BY '\t'
  9.  
  10.  
  11. 實際: 
  12. hive> show create table fdm_buffalo_3_5_task_exec_time; 
  13. OK 
  14. CREATE EXTERNAL TABLE `fdm_buffalo_3_5_task_exec_time`( 
  15.   `task_id` int COMMENT '任務id',  
  16.   `task_version` string COMMENT '任務版本',  
  17.   `exec_time` string COMMENT '平均執行時長'
  18. PARTITIONED BY (  
  19.   `dt` string) 
  20. ROW FORMAT DELIMITED  
  21.   FIELDS TERMINATED BY '\t'  
  22. STORED AS INPUTFORMAT  
  23.   'org.apache.hadoop.mapred.TextInputFormat'  
  24. OUTPUTFORMAT  
  25.   'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' 
  26. LOCATION 
  27.   'hdfs://ns5/user/dd_edw/fdm.db/fdm_buffalo_3_5_task_exec_time' 
  28. TBLPROPERTIES ( 
  29.   'mart_name'='dd_edw',  
  30.   'transient_lastDdlTime'='1555384611'
  31. Time taken: 0.036 seconds, Fetched: 17 row(s) 

3、將數據文件加載(導入)到Hive表中

在Hive中創建完表之后,我們隨后自然要向表中導入數據,但是在導入數據的時候和我們的傳統數據庫(MySql、Oracle)是不同的:Hive不支持一條一條的用insert語句進行插入操作,也不支持update的操作。Hive表中的數據是以load的方式,加載到建立好的表中。數據一旦導入,則不可修改。要么drop掉整個表,要么建立新的表,導入新的數據。

導入數據的語法格式為: 

Hive為什么這么受歡迎?看完Hive架構以及應用介紹,你就明白了!

導入數據時要注意一下幾點:

  • local inpath表示從本地linux中向Hive表中導入數據,inpath表示從HDFS中向Hive表中導入數據
  • 默認是向原Hive表中追加數據,overwrite表示覆蓋表中的原數據進行導入
  • partition是分區表特有的,而且在導入數據數據時是必須添加的,否則會報錯
  • load 操作只是單純的復制/移動操作,將數據文件復制/移動到 Hive 表對應的位置,即Hive 在加載數據的過程中不會對數據本身進行任何修改,而只是將數據內容復制或者移動到相應的表中

導入示例代碼:(注意overwrite的用法)

  1. hive> load data local inpath "/home/dd_edw/zmy_project/task_relations.txt" overwrite into table fdm.chevrolet_buffalo_task_recusion_relations partition(dt='2019-05-28'); 
  2. Loading data to table fdm.chevrolet_buffalo_task_recusion_relations partition (dt=2019-05-28) 
  3. Moved: 'hdfs://ns5/user/dd_edw/fdm.db/chevrolet_buffalo_task_recusion_relations/dt=2019-05-28/task_relations.txt' to trash at: hdfs://ns5/user/dd_edw/.Trash/Current 
  4. Moved: 'hdfs://ns5/user/dd_edw/fdm.db/chevrolet_buffalo_task_recusion_relations/dt=2019-05-28/task_relations_copy_1.txt' to trash at: hdfs://ns5/user/dd_edw/.Trash/Current 
  5. Partition fdm.chevrolet_buffalo_task_recusion_relations{dt=2019-05-28} stats: [numFiles=1, numRows=0, totalSize=272475104, rawDataSize=0] 
  6. OK 
  7. Time taken: 3.381 seconds 
  8. hive> dfs -ls hdfs://ns5/user/dd_edw/fdm.db/chevrolet_buffalo_task_recusion_relations/*/ ; 
  9. Found 1 items 
  10. -rwxr-xr-x   3 dd_edw dd_edw  272475104 2019-05-29 20:08 hdfs://ns5/user/dd_edw/fdm.db/chevrolet_buffalo_task_recusion_relations/dt=2019-05-28/task_relations.txt 

4、Hive添加分區操作:

正確語句:

  1. hive> ALTER TABLE fdm_buffalo_3_5_task_exec_time ADD IF NOT EXISTS PARTITION (dt='2019-04-15'); 
  2. OK 
  3. Time taken: 0.059 seconds 

錯誤語句:

  1. hive> alter table fdm_buffalo_3_5_task_exec_time if not exists add partition (dt='2019-04-15'); 
  2. NoViableAltException(132@[]) 
  3.         at org.apache.hadoop.hive.ql.parse.HiveParser.alterTableStatementSuffix(HiveParser.java:8170) 
  4.         at org.apache.hadoop.hive.ql.parse.HiveParser.alterStatement(HiveParser.java:7635) 
  5.         at org.apache.hadoop.hive.ql.parse.HiveParser.ddlStatement(HiveParser.java:2798) 
  6.         at org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:1731) 
  7.         at org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1136) 
  8.         at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:202) 
  9.         at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:166) 
  10.         at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:411) 
  11.         at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:320) 
  12.         at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1372) 
  13.         at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1425) 
  14.         at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1150) 
  15.         at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1093) 
  16.         at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:241) 
  17.         at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:191) 
  18.         at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:551) 
  19.         at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:969) 
  20.         at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:912) 
  21.         at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:824) 
  22.         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
  23.         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
  24.         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
  25.         at java.lang.reflect.Method.invoke(Method.java:606) 
  26.         at org.apache.hadoop.util.RunJar.run(RunJar.java:221) 
  27.         at org.apache.hadoop.util.RunJar.main(RunJar.java:136) 
  28. FAILED: ParseException line 1:43 cannot recognize input near 'if' 'not' 'exists' in alter table statement 

5、查看某個分區

  1. desc formatted bdm.bdm_dispatch_1_d_task_da partition(dt='2019-07-14'); 

三:Hive與Hbase的區別

其實從嚴格意義上講,Hive與Hbase就不應該談區別,談區別的原因無非就是Hive與Hbase本身都涉及到了表的創建、向表中插入數據等等。所以我們希望找到Hive與Hbase的區別,但是為什么兩者談不上區別呢,原因如下:

  1. 根據上文分析,Hive從某種程度上講就是很多“SQL—MapReduce”框架的一個封裝,即Hive就是MapReduce的一個封裝,Hive的意義就是在業務分析中將用戶容易編寫、會寫的Sql語言轉換為復雜難寫的MapReduce程序。
  2. Hbase可以認為是hdfs的一個包裝。他的本質是數據存儲,是個NoSql數據庫;hbase部署于hdfs之上,并且克服了hdfs在隨機讀寫方面的缺點。

因此若要問Hive與Hbase之前的區別,就相當于問HDFS與MapReduce之間的區別,而HDFS與MapReduce兩者之間談區別意義并不大。

但是當我們非要談Hbase與Hive的區別時,可以從以下幾個方面進行討論:

Hive和Hbase是兩種基于Hadoop的不同技術–Hive是一種類SQL的引擎,并且運行MapReduce任務,Hbase是一種在Hadoop之上的NoSQL 的Key/vale數據庫。當然,這兩種工具是可以同時使用的。就像用Google來搜索,用FaceBook進行社交一樣,Hive可以用來進行統計查詢,HBase可以用來進行實時查詢,數據也可以從Hive寫到Hbase,設置再從Hbase寫回Hive。

Hive適合用來對一段時間內的數據進行分析查詢,例如,用來計算趨勢或者網站的日志。Hive不應該用來進行實時的查詢。因為它需要很長時間才可以返回結果。

Hbase非常適合用來進行大數據的實時查詢。Facebook用Hive進行消息和實時的分析。它也可以用來統計Facebook的連接數。

 

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2020-06-16 14:13:50

Kubernetes容器Linux

2021-08-26 11:10:42

架構運維技術

2020-01-09 15:30:32

微服務架構互聯網

2020-02-08 16:46:29

微服務架構復雜

2022-02-25 07:07:04

擴展塢電腦筆記本

2024-06-03 00:00:03

2016-10-27 11:11:12

頭條

2021-03-02 16:25:13

手機iPhone安卓

2017-07-26 10:21:46

DockerLinux容器

2020-06-02 19:14:59

Kubernetes容器開發

2024-11-19 18:03:04

2020-10-08 18:53:54

以太網Etheme網卡

2020-07-06 09:25:54

開發編輯器代碼

2017-07-04 11:26:37

2020-01-06 08:40:11

阿里場景服務

2019-09-06 10:31:45

軟件開發地圖

2019-06-05 15:20:00

MongoDBNoSQL數據庫

2019-12-25 10:45:30

Java悲觀鎖

2019-12-19 17:00:01

Java線程

2022-06-16 20:56:53

邊緣計算
點贊
收藏

51CTO技術棧公眾號

黑人巨大国产9丨视频| 午夜精品福利视频网站| 国产精品视频免费在线| v8888av| 国产精品实拍| 国产不卡视频在线观看| 久久久久久久av| 亚洲av网址在线| 澳门av一区二区三区| 日本一区二区免费在线| 国产精品免费一区豆花| 黄色免费视频网站| av中文字幕在线观看第一页| 精品久久久久久久久久久国产字幕| 免费观看成人性生生活片| 国产婷婷色一区二区三区在线| 91成人福利在线| 免费福利视频网站| 亚洲不卡视频| 欧美日韩亚洲视频| 日韩电影大全在线观看| 国产xxxx在线观看| 久久aⅴ国产紧身牛仔裤| 亚洲欧美三级伦理| 亚洲综合123| 久久av色综合| 国产精品欧美经典| 69174成人网| 天天操夜夜操av| 日韩精品一区国产| 欧美日韩国产专区| 国产一二三四五| 人操人视频在线观看| 国模大尺度一区二区三区| 欧美日本黄视频| 大吊一区二区三区| 卡一精品卡二卡三网站乱码 | 色综合久久88色综合天天6| 欧美韩国日本精品一区二区三区| 国产人妖在线播放| 日韩黄色免费网站| 欧美大胆a视频| 欧美一区二区免费在线观看| 国产日本亚洲| 日韩欧美大尺度| 日本男女交配视频| 在线观看中文字幕的网站| 国产真实有声精品录音| 国内精品不卡在线| 国产精品精品久久久久久| 成人自拍爱视频| 国产一级做a爱片久久毛片a| 色无极亚洲影院| 日韩精品中文字幕在线| 三上悠亚 电影| 激情欧美一区二区三区黑长吊| 精品人伦一区二区三区蜜桃网站 | av电影一区| 一区二区在线看| 一区二区不卡在线观看| 四虎在线观看| 国产69精品久久久久毛片| 国模精品视频一区二区| 2025国产精品自拍| 婷婷综合激情| 中文字幕日韩av电影| 欧美日韩一区二区三区四区五区六区| 69堂精品视频在线播放| 色狠狠综合天天综合综合| 青青草原av在线播放| 亚洲国产精品精华素| 亚洲美女视频在线| 日本一区二区三区四区五区六区| 永久免费av在线| 国产精品国产三级国产普通话99 | 懂色av一区二区三区免费看| 成人网在线视频| 日本免费在线观看视频| 噜噜噜91成人网| 日本国产一区二区三区| 五月天婷婷久久| 欧美韩日精品| 欧美俄罗斯性视频| 99热国产在线观看| 美女91精品| 国产原创欧美精品| 国产探花精品一区二区| 成人妖精视频yjsp地址| 国产z一区二区三区| 天堂av免费在线观看| 日本aⅴ精品一区二区三区| 国产精品视频久久| 国产精品无码在线播放| 美女视频黄久久| 91在线播放视频| 亚洲综合一区中| 国产精品综合在线视频| 欧美成人免费大片| 免费毛片在线播放免费| 国产裸体美女永久免费无遮挡| 教室别恋欧美无删减版| 在线日韩第一页| 婷婷激情四射网| 99国产精品99久久久久久粉嫩| 欧美中文字幕第一页| 中文字幕 亚洲视频| 六月丁香综合在线视频| 99国产高清| 免费观看国产精品| 国产精品66部| 日本一区视频在线| yw193.com尤物在线| 亚洲激情男女视频| 国产中文字幕免费观看| а√在线天堂官网| 在线观看日韩毛片| 不卡的在线视频| 国产电影一区| 亚洲欧美成人精品| 男的操女的网站| 午夜影院日韩| 2019国产精品自在线拍国产不卡| 国偷自拍第113页| 久久精品国产在热久久| 国产女人水真多18毛片18精品 | 欧美精品一区男女天堂| 九色精品免费永久在线| 熟女俱乐部一区二区| 999久久久精品国产| 欧美二区乱c黑人| 做爰无遮挡三级| 成人动漫精品一区二区| 一区二区三区www| 草视频在线观看| 夜夜嗨一区二区三区| 91香蕉国产在线观看| 青青草视频在线免费观看| 亚洲欧洲综合另类在线| 精品视频无码一区二区三区| www999久久| 国产亚洲a∨片在线观看| 久久亚洲精品大全| 美腿丝袜亚洲三区| 欧美成人一区二区在线| 国产乱码在线| 欧美怡红院视频| 亚洲区自拍偷拍| 中文亚洲字幕| 97超级在线观看免费高清完整版电视剧| 国产在线视频网| 色综合天天做天天爱| 日韩女优在线视频| 欧美激情精品久久久六区热门| 国产欧美久久一区二区| 高清日韩av电影| 日韩欧美亚洲国产一区| 日韩欧美色视频| 色爱综合网欧美| 国产精品美女主播在线观看纯欲| 丰满人妻一区二区三区四区| 久久综合久久99| 国产男女在线观看| 夜夜躁狠狠躁日日躁2021日韩| 91成人精品网站| 国产乱人乱偷精品视频a人人澡| 日本一区免费视频| 校园春色 亚洲色图| 波多野结衣在线观看一区| 第四色在线一区二区| 日韩一区二区av| 最新中文字幕免费| 国产精品福利av | 久久亚洲一区| 欧美日韩精品久久| 亚洲天堂1区| 最近2019好看的中文字幕免费| 最新黄色网址在线观看| 中文字幕在线观看不卡| 色悠悠久久综合网| 欧美在线视屏| 成人黄色av网站| 在线观看的网站你懂的| 日韩片之四级片| 精品少妇久久久| 91亚洲永久精品| 欧美精品成人网| 国产精品x453.com| 国产不卡一区二区在线观看| freexxx性亚洲精品| 亚洲欧美国产视频| 久久久久久在线观看| 亚洲天天做日日做天天谢日日欢| 日本精品一二三区| 三级欧美在线一区| 中文一区一区三区免费| 日本在线视频一区二区| 欧美成人黄色小视频| 国产毛片毛片毛片毛片毛片| 一区二区三区四区不卡在线| 蜜桃导航-精品导航| 林心如三级全黄裸体| 久久久久久久波多野高潮日日| 亚洲精品国产系列| 亚洲国产aⅴ精品一区二区| 97精品一区二区三区| 福利视频在线播放| 日韩欧美国产精品一区| 久久久精品福利| 国产性天天综合网| 亚洲精品视频导航| 欧美ab在线视频| 欧美日韩在线高清| 91欧美极品| 国产精品久久久久久一区二区 | 国产伦精品一区二区三区视频青涩| 国产玉足脚交久久欧美| 欧洲激情视频| 国产精品污www一区二区三区| 欧美伦理91| 中文字幕在线亚洲| 成人免费一区二区三区| 亚洲欧美激情插| brazzers精品成人一区| 捆绑调教一区二区三区| 欧美高清中文字幕| 色综合久久一区二区三区| 俄罗斯精品一区二区三区| 吉吉日韩欧美| 亚洲久色影视| 91精品国产综合久久香蕉最新版 | 国产特黄大片aaaa毛片| 综合中文字幕亚洲| 国产二级一片内射视频播放| 黄色精品一二区| 九色91popny| 亚洲精品1区2区| 黄色影视在线观看| 99tv成人| 亚洲成人在线视频网站| 亚洲一区二区三区在线免费| 国产免费亚洲高清| 亚洲综合在线电影| 69视频在线播放| 欧美巨大xxxx做受沙滩| 超碰精品一区二区三区乱码| 成全电影播放在线观看国语| 亚洲精品电影在线| 高潮毛片7777777毛片| 制服丝袜av成人在线看| 这里只有精品6| 欧美在线观看你懂的| 亚洲免费在线观看av| 国产精品沙发午睡系列990531| 日本xxxx裸体xxxx| 97精品超碰一区二区三区| 国产精品18毛片一区二区| 国产一级18片视频| 欧美国产激情二区三区| b站大片免费直播| 26uuu久久天堂性欧美| 五月天丁香社区| 国产精品一区二区在线看| 国产无色aaa| 美女脱光内衣内裤视频久久网站 | 国产精品麻豆入口| 国产成人精品免费在线| 91香蕉国产线在线观看| 激情另类小说区图片区视频区| 欧美激情成人网| 爽爽淫人综合网网站| 黄色国产小视频| 首页欧美精品中文字幕| 成年人午夜免费视频| 欧美激情综合色综合啪啪| 999久久欧美人妻一区二区| 91精品综合| www.日本在线视频| 日韩视频久久| 国产中文字幕乱人伦在线观看| 午夜欧美精品| 无码人妻丰满熟妇区96| 亚洲人人精品| 免费网站在线观看视频| 亚洲国产裸拍裸体视频在线观看乱了中文| 91丨porny丨探花| 久久久久久久尹人综合网亚洲| 冲田杏梨av在线| 国产乱子轮精品视频| 折磨小男生性器羞耻的故事| 国产a级毛片一区| 手机在线看片日韩| 国产精品情趣视频| 国产一级在线播放| 五月天婷婷综合| 999视频在线| 7777精品伊人久久久大香线蕉经典版下载| 99久久久无码国产精品免费| 欧美精品久久一区二区三区| 国产福利小视频| 日韩av在线不卡| 自拍视频在线免费观看| 国产在线国偷精品免费看| 精品欧美一区二区在线观看视频| 欧美理论电影在线精品| 婷婷精品国产一区二区三区日韩| 国产精品国产一区| www.av中文字幕| 自拍欧美日韩| 欧美精品成人网| 成人小视频在线| 丁香花五月婷婷| 一区二区三区四区不卡在线| 97人妻一区二区精品视频| 91麻豆精品国产| 免费看av毛片| 日韩欧美一级精品久久| 国产三级电影在线| 国内精品久久久久久| 91p九色成人| 国产精品伊人日日| 久久久久久久久久久久久久久久久久| 大地资源网在线观看免费官网| 久久久精品日韩| 国产精欧美一区二区三区白种人| 国产成人av一区| 亚洲色图 激情小说| 激情亚洲一区二区三区四区| 国产精品丝袜黑色高跟鞋| 中文字幕日韩av| 欧美123区| 久热国产精品视频一区二区三区| 国一区二区在线观看| 欧美高清精品一区二区| 18欧美亚洲精品| 伊人网av在线| 一区二区亚洲精品国产| 欧美va在线观看| 欧美午夜精品理论片a级大开眼界| 亚洲一区二区日韩| 色偷偷中文字幕| 欧美经典一区二区三区| 国产精品51麻豆cm传媒| 亚洲精品在线视频| 亚洲第一影院| 特级西西444www大精品视频| 日韩国产高清影视| 超碰人人人人人人人| 欧美午夜精品一区| 香港伦理在线| 成人福利在线视频| 亚州av乱码久久精品蜜桃| 992kp免费看片| 亚洲一区二区视频| 人妻一区二区三区免费| 欧美xxxx18国产| 97视频一区| 久久av高潮av| 99精品视频在线观看免费| 欧美激情黑白配| 国产午夜精品一区二区三区| 全球最大av网站久久| 一区二区视频在线播放| 极品少妇xxxx精品少妇偷拍| 娇小11一12╳yⅹ╳毛片| 欧美一区二区免费视频| 日韩精品成人在线| 日韩精品亚洲一区二区三区免费| 日本xxxx免费| 精品久久久久久久久国产字幕 | 国产视频在线观看一区二区| 欧美大片免费| 一级一片免费播放| 成人av综合一区| 国产成人一区二区三区影院在线 | 99精品国产一区二区| 国产一区二区三区四区老人| 超碰97在线资源站| 欧美日韩亚洲综合一区| 手机在线免费av| 明星裸体视频一区二区| 久99久精品视频免费观看| 麻豆91精品91久久久| 精品视频偷偷看在线观看| 日韩成人综合网| 欧美一级视频免费看| 国产日韩av一区| 国产露脸无套对白在线播放| 91国产视频在线播放| 欧美日韩亚洲在线观看| 北条麻妃亚洲一区| 色伊人久久综合中文字幕| 国产剧情在线| 日本一区二区三区四区高清视频 | 色噜噜噜噜噜噜| 欧美一卡2卡三卡4卡5免费| 青青草原av在线| 亚洲午夜精品久久| av电影在线观看不卡| 精品成人无码久久久久久| 久久久亚洲国产|