導航:首頁 > 源碼編譯 > hive編譯所需

hive編譯所需

發布時間:2022-10-31 13:22:46

Ⅰ hive怎麼實現update操作

1、要想使用Hive首先需要啟動hadoop,因為hive的使用是依賴於hadoop的hdfs文件系統以及MapRece計算的,下圖是啟動hadoop,如下圖。

Ⅱ Hive入門概述

1.1 什麼是Hive

Hive:由Facebook開源用於解決海量結構化日誌的數據統計。

Hive是基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張表,並提供類SQL查詢功能。本質是:將HQL轉化成MapRece程序

Hive處理的數據存儲在HDFS

Hive分析數據底層的實現是MapRece

執行程序運行在Yarn上

1.2 Hive的優缺點

1.2.1 優點

操作介面採用類SQL語法,提供快速開發的能力(簡單、容易上手)。

避免了去寫MapRece,減少開發人員的學習成本。

Hive的執行延遲比較高,因此Hive常用於數據分析,對實時性要求不高的場合。

Hive優勢在於處理大數據,對於處理小數據沒有優勢,因為Hive的執行延遲比較高。

Hive支持用戶自定義函數,用戶可以根據自己的需求來實現自己的函數。

1.2.2 缺點

1.Hive的HQL表達能力有限

(1)迭代式演算法無法表達

(2)數據挖掘方面不擅長

2.Hive的效率比較低

(1)Hive自動生成的MapRece作業,通常情況下不夠智能化

(2)Hive調優比較困難,粒度較粗

1.3 Hive架構原理

1.用戶介面:Client

CLI(hive shell)、JDBC/ODBC(java訪問hive)、WEBUI(瀏覽器訪問hive)

2.元數據:Metastore

元數據包括:表名、表所屬的資料庫(默認是default)、表的擁有者、列/分區欄位、表的類型(是否是外部表)、表的數據所在目錄等;

默認存儲在自帶的derby資料庫中,推薦使用MySQL替代derby存儲Metastore

3.Hadoop

使用HDFS進行存儲,使用MapRece進行計算。

4.驅動器:Driver

(1)解析器(SQL Parser):將SQL字元串轉換成抽象語法樹AST,這一步一般都用第三方工具庫完成,比如antlr;對AST進行語法分析,比如表是否存在、欄位是否存在、SQL語義是否有誤。

(2)編譯器(Physical Plan):將AST編譯生成邏輯執行計劃。

(3)優化器(Query Optimizer):對邏輯執行計劃進行優化。

(4)執行器(Execution):把邏輯執行計劃轉換成可以運行的物理計劃。對於Hive來說,就是MR/Spark。

Hive通過給用戶提供的一系列交互介面,接收到用戶的指令(SQL),使用自己的Driver,結合元數據(MetaStore),將這些指令翻譯成MapRece,提交到Hadoop中執行,最後,將執行返回的結果輸出到用戶交互介面。

1.4 Hive和資料庫比較

由於 Hive 採用了類似SQL 的查詢語言 HQL(Hive Query Language),因此很容易將 Hive 理解為資料庫。其實從結構上來看,Hive 和資料庫除了擁有類似的查詢語言,再無類似之處。本文將從多個方面來闡述 Hive 和資料庫的差異。資料庫可以用在 Online 的應用中,但是Hive 是為數據倉庫而設計的,清楚這一點,有助於從應用角度理解 Hive 的特性。

1.4.1 查詢語言

由於SQL被廣泛的應用在數據倉庫中,因此,專門針對Hive的特性設計了類SQL的查詢語言HQL。熟悉SQL開發的開發者可以很方便的使用Hive進行開發。

1.4.2 數據存儲位置

Hive 是建立在 Hadoop 之上的,所有 Hive 的數據都是存儲在 HDFS 中的。而資料庫則可以將數據保存在塊設備或者本地文件系統中。

1.4.3 數據更新

由於Hive是針對數據倉庫應用設計的,而數據倉庫的內容是讀多寫少的。因此,Hive中不建議對數據的改寫,所有的數據都是在載入的時候確定好的。而資料庫中的數據通常是需要經常進行修改的,因此可以使用 INSERT INTO … VALUES 添加數據,使用 UPDATE … SET修改數據。

1.4.4 索引

Hive在載入數據的過程中不會對數據進行任何處理,甚至不會對數據進行掃描,因此也沒有對數據中的某些Key建立索引。Hive要訪問數據中滿足條件的特定值時,需要暴力掃描整個數據,因此訪問延遲較高。由於 MapRece 的引入, Hive 可以並行訪問數據,因此即使沒有索引,對於大數據量的訪問,Hive 仍然可以體現出優勢。資料庫中,通常會針對一個或者幾個列建立索引,因此對於少量的特定條件的數據的訪問,資料庫可以有很高的效率,較低的延遲。由於數據的訪問延遲較高,決定了 Hive 不適合在線數據查詢。

1.4.5 執行

Hive中大多數查詢的執行是通過 Hadoop 提供的 MapRece 來實現的。而資料庫通常有自己的執行引擎。

1.4.6 執行延遲

Hive 在查詢數據的時候,由於沒有索引,需要掃描整個表,因此延遲較高。另外一個導致 Hive 執行延遲高的因素是 MapRece框架。由於MapRece 本身具有較高的延遲,因此在利用MapRece 執行Hive查詢時,也會有較高的延遲。相對的,資料庫的執行延遲較低。當然,這個低是有條件的,即數據規模較小,當數據規模大到超過資料庫的處理能力的時候,Hive的並行計算顯然能體現出優勢。

1.4.7 可擴展性

由於Hive是建立在Hadoop之上的,因此Hive的可擴展性是和Hadoop的可擴展性是一致的(世界上最大的Hadoop 集群在 Yahoo!,2009年的規模在4000 台節點左右)。而資料庫由於 ACID 語義的嚴格限制,擴展行非常有限。目前最先進的並行資料庫 Oracle 在理論上的擴展能力也只有100台左右。

1.4.8 數據規模

由於Hive建立在集群上並可以利用MapRece進行並行計算,因此可以支持很大規模的數據;對應的,資料庫可以支持的數據規模較小。

Ⅲ 程序中的Hive具體是干什麼用的呢

Hive是基於Hadoop平台的數倉工具,具有海量數據存儲、水平可擴展、離線批量處理的優點,解決了傳統關系型數倉不能支持海量數據存儲、水平可擴展性差等問題,但是由於Hive數據存儲和數據處理是依賴於HDFS和MapRece,因此在Hive進行數據離線批量處理時,需將查詢語言先轉換成MR任務,由MR批量處理返回結果,所以Hive沒法滿足數據實時查詢分析的需求。
Hive是由FaceBook研發並開源,當時FaceBook使用Oracle作為數倉,由於數據量越來越大,Oracle數倉性能越來越差,沒法實現海量數據的離線批量分析,因此基於Hadoop研發Hive,並開源給Apacha。
由於Hive不能實現數據實時查詢交互,Hbase可提供實時在線查詢能力,因此Hive和Hbase形成了良性互補。Hbase因為其海量數據存儲、水平擴展、批量數據處理等優點,也得到了廣泛應用。
Pig與HIVE工具類似,都可以用類sql語言對數據進行處理。但是他們應用場景有區別,Pig用於數據倉庫數據的ETL,HIVE用於數倉數據分析。
從架構圖當中,可看出Hive並沒有完成數據的存儲和處理,它是由HDFS完成數據存儲,MR完成數據處理,其只是提供了用戶查詢語言的能力。Hive支持類sql語言,這種SQL稱為Hivesql。用戶可用Hivesql語言查詢,其驅動可將Hivesql語言轉換成MR任務,完成數據處理。
【Hive的訪問介面】
CLI:是hive提供的命令行工具
HWI:是Hive的web訪問介面
JDBC/ODBC:是兩種的標準的應用程序編程訪問介面
Thrift Server:提供異構語言,進行遠程RPC調用Hive的能力。
因此Hiv具備豐富的訪問介面能力,幾乎能滿足各種開發應用場景需求。
【Driver】
是HIVE比較核心的驅動模塊,包含編譯器、優化器、執行器,職責為把用戶輸入的Hivesql轉換成MR數據處理任務
【Metastore】
是HIVE的元數據存儲模塊,數據的訪問和查找,必須要先訪問元數據。Hive中的元數據一般使用單獨的關系型資料庫存儲,常用的是Mysql,為了確保高可用,Mysql元資料庫還需主備部署。
架構圖上面Karmasphere、Hue、Qubole也是訪問HIVE的工具,其中Qubole可遠程訪問HIVE,相當於HIVE作為一種公有雲服務,用戶可通過互聯網訪問Hive服務。
Hive在使用過程中出現了一些不穩定問題,由此發展出了Hive HA機制,

Ⅳ hive 自定義函數需要哪些jar包

為什麼使用Hive?為什麼使用Hive?那麼,在哪裡使用Hive呢?在載入了60億行(經度、維度、時間、數據值、高度)數據集到MySQL後,系統崩潰了,並經歷過數據丟失。這可能部分是因為我們最初的策略是將所有的數據都存儲到單一的一張表中了。後來,我們調整了策略通過數據集和參數進行分表,這有所幫助但也因此引入了額外的消耗,而這並非是我們願意接受的。相反,我們決定嘗試使用ApacheHive技術。我們安裝了Hive0.5+20,使用CDHv3和ApacheHadoop(0202+320)。CDHv3還包含有許多其他相關工具,包括Sqoop和Hue這些在我們的架構中都標識出來了,如圖23-3底部所示。我們使用ApacheSqoop轉儲數據到Hive中,然後通過寫一個ApacheOODT包裝器,來使Hive按照空間/時間約束查詢數據,然後將結果提供給RCMET和其他用戶(圖23-2中間部分顯示)。RCMES集群的完整的架構如圖23-3所示。我們有5台機器,包括圖中所示的一個主/從配置,通過一個運行GigE的私人網進行連接。Hive提供了什麼Photobucket公司使用Hive的主要目標是為業務功能、系統性能和用戶行為提供答案。為了滿足這些需求,我們每晚都要通過Flume從數百台伺服器上的MySQL資料庫中轉儲來自Web伺服器和自定義格式日誌TB級別的數據。這些數據有助於支持整個公司許多組織,比如行政管理、廣告、客戶支持、產品開發和操作,等等。對於歷史數據,我們保持所有MySQL在每月的第一天創建的所有的數據作為分區數據並保留30天以上的日誌文件。Photobucket使用一個定製的ETL框架來將MySQL資料庫中數據遷移到Hive中。使用Flume將日誌文件數據寫入到HDFS中並按照預定的Hive流程進行處理。Hive支持的用戶有哪些行政管理依賴於使用Hadoop提供一般業務健康狀況的報告。Hive允許我們解析結構化資料庫數據和非結構化的點擊流數據,以及業務所涉及的數據格式進行讀取。廣告業務使用Hive篩選歷史數據來對廣告目標進行預測和定義配額。產品開發無疑是該組織中產生最大數量的特定的查詢的用戶了。對於任何用戶群,時間間隔變化或隨時間而變化。Hive是很重要的,因為它允許我們通過對在當前和歷史數據中運行A/B測試來判斷在一個快速變化的用戶環境中新產品的相關特性。在Photobucket公司中,為我們的用戶提供一流的系統是最重要的目標。從操作的角度來看,Hive被用來匯總生成跨多個維度的數據。在公司里知道最流行的媒體、用戶、參考域是非常重要的。控制費用對於任何組織都是重要的。一個用戶可以快速消耗大量的系統資源,並顯著增加每月的支出。Hive可以用於識別和分析出這樣的惡意用戶,以確定哪些是符合我們的服務條款,而哪些是不符合的。也可以使用Hive對一些操作運行A/B測試來定義新的硬體需求和生成ROI計算。Hive將用戶從底層MapRece代碼解放出來的能力意味著可以在幾個小時或幾天內就可以獲得答案,而不是之前的數周。Hive中的資料庫Hive中資料庫的概念本質上僅僅是表的一個目錄或者命名空間。然而,對於具有很多組和用戶的大集群來說,這是非常有用的,因為這樣可以避免表命名沖突。通常會使用資料庫來將生產表組織成邏輯組。如果用戶沒有顯式指定資料庫,那麼將會使用默認的資料庫default。下面這個例子就展示了如何創建一個資料庫:hive>CREATEDATABASEfinancials;如果資料庫financials已經存在的話,那麼將會拋出一個錯誤信息。使用如下語句可以避免在這種情況下拋出錯誤信息:hive>;雖然通常情況下用戶還是期望在同名資料庫已經存在的情況下能夠拋出警告信息的,但是IFNOTEXISTS這個子句對於那些在繼續執行之前需要根據需要實時創建資料庫的情況來說是非常有用的。在所有的資料庫相關的命令中,都可以使用SCHEMA這個關鍵字來替代關鍵字TABLE。隨時可以通過如下命令方式查看Hive中所包含的資料庫:hive>SHOWDATABASES;defaultfinancialshive>CREATEDATABASEhuman_resources;hive>SHOWDATABASES;defaultfinancialshuman_resources如果資料庫非常多的話,那麼可以使用正則表達式匹配來篩選出需要的資料庫名,正則表達式這個概念,將會在第6.2.3節「Like和RLike」介紹。下面這個例子展示的是列舉出所有以字母h開頭,以其他字元結尾(即.*部分含義)的資料庫名:hive>SHOWDATABASESLIKE'h.*';human_resourceshive>Hive會為每個資料庫創建一個目錄。資料庫中的表將會以這個資料庫目錄的子目錄形式存儲。有一個例外就是default資料庫中的表,因為這個資料庫本身沒有自己的目錄。資料庫所在的目錄位於屬性hive.metastore.warehouse.dir所指定的頂層目錄之後,這個配置項我們已經在前面的第2.5.1節「本地模式配置」和第2.5.2節「分布式模式和偽分布式模式配置」中進行了介紹。假設用戶使用的是這個配置項默認的配置,也就是/user/hive/warehouse,那麼當我們創建資料庫financials時,Hive將會對應地創建一個目錄/user/hive/warehouse/financials.db。這里請注意,資料庫的文件目錄名是以.db結尾的。用戶可以通過如下的命令來修改這個默認的位置:hive>CREATEDATABASEfinancials>LOCATION'/my/preferred/directory';用戶也可以為這個資料庫增加一個描述信息,這樣通過DESCRIBEDATABASE命令就可以查看到該信息。hive>CREATEDATABASEfinancials>COMMENT'Holdsallfinancialtables';hive>DESCRIBEDATABASEfinancials;://master-server/user/hive/warehouse/financials.db從上面的例子中,我們可以注意到,DESCRIEBDATABASE語句也會顯示出這個資料庫所在的文件目錄位置路徑。在這個例子中,URI格式是hdfs。如果安裝的是MapR,那麼這里就應該是maprfs。對於亞馬遜彈性MapRece(EMR)集群,這里應該是hdfs,但是用戶可以設置hive.metastore.warehouse.dir為亞馬遜S3特定的格式(例如,屬性值設置為s3n://bucketname)。用戶可以使用s3作為模式,但是如果使用新版的規則s3n會更好。前面DESCRIBEDATABASE語句的輸出中,我們使用了master-server來代表URI許可權,也就是說應該是由文件系統的「主節點」(例如,HDFS中運行NameNode服務的那台伺服器)的伺服器名加上一個可選的埠號構成的(例如,伺服器名:埠號這樣的格式)。如果用戶執行的是偽分布式模式,那麼主節點伺服器名稱就應該是localhost。對於本地模式,這個路徑應該是一個本地路徑,例如file:///user/hive/warehouse/financials.db。如果這部分信息省略了,那麼Hive將會使用Hadoop配置文件中的配置項fs.default.name作為master-server所對應的伺服器名和埠號,這個配置文件可以在$HADOOP_HOME/conf這個目錄下找到。需要明確的是,hdfs:///user/hive/warehouse/financials.db和hdfs://master-server/user/hive/warehouse/financials.db是等價的,其中master-server是主節點的DNS名和可選的埠號。為了保持完整性,當用戶指定一個相對路徑(例如,some/relative/path)時,對於HDFS和Hive,都會將這個相對路徑放到分布式文件系統的指定根目錄下(例如,hdfs:///user/)。然而,如果用戶是在本地模式下執行的話,那麼當前的本地工作目錄將是some/relative/path的父目錄。為了腳本的可移植性,通常會省略掉那個伺服器和埠號信息,而只有在涉及到另一個分布式文件系統實例(包括S3存儲)的時候才會指明該信息。此外,用戶還可以為資料庫增加一些和其相關的鍵-值對屬性信息,盡管目前僅有的功能就是提供了一種可以通過DESCRIBEDATABASEEXTENDED語句顯示出這些信息的方式:hive>CREATEDATABASEfinancials>WITHDBPROPERTIES('creator'='MarkMoneybags','date'='2012-01-02');hive>DESCRIBEDATABASEfinancials;financialshdfs://master-server/user/hive/warehouse/financials.dbhive>;financialshdfs://master-server/user/hive/warehouse/financials.db{date=2012-01-02,creator=MarkMoneybags);USE命令用於將某個資料庫設置為用戶當前的工作資料庫,和在文件系統中切換工作目錄是一個概念:hive>USEfinancials;現在,使用像SHOWTABLES這樣的命令就會顯示當前這個資料庫下所有的表。不幸的是,並沒有一個命令可以讓用戶查看當前所在的是哪個資料庫!幸運的是,在Hive中是可以重復使用USE…命令的,這是因為在Hive中並沒有嵌套資料庫的概念。可以回想下,在第2.7.2節「變數和屬性」中提到過,可以通過設置一個屬性值來在提示符裡面顯示當前所在的資料庫(Hivev0.8.0版本以及之後的版本才支持此功能):hive>sethive.cli.print.current.db=true;hive(financials)>USEdefault;hive(default)>sethive.cli.print.current.db=false;hive>最後,用戶可以刪除資料庫:hive>;IFEXISTS子句是可選的,如果加了這個子句,就可以避免因資料庫finanacials不存在而拋出警告信息。默認情況下,Hive是不允許用戶刪除一個包含有表的資料庫的。用戶要麼先刪除資料庫中的表,然後再刪除資料庫;要麼在刪除命令的最後面加上關鍵字CASCADE,這樣可以使Hive自行先刪除資料庫中的表:hive>CASCADE;如果使用的是RESTRICT這個關鍵字而不是CASCADE這個關鍵字的話,那麼就和默認情況一樣,也就是,如果想刪除資料庫,那麼必須先要刪除掉該資料庫中的所有表。如果某個資料庫被刪除了,那麼其對應的目錄也同時會被刪除。

Ⅳ 如何編譯hive_hbase-handler.jar

之前上傳了一個文檔:http://wenku..com/view/faec57fb04a1b0717fd5dd00.html?st=1你可以看看。

Ⅵ hive定義一個自定義函數類時,需要繼承以下哪個類

一個類一定要進行初始化的啊 如果一個類中沒有定義任何的構造函數,那麼編譯器只有在以下三種情況,才會提供默認的構造函數:1、如果類有虛擬成員函數或者虛擬繼承父類(即有虛擬基類)時;2、如果類的基類有構造函數(可以是用戶定義的構造函數,或編譯器提供的默認構造函數);3、在類中的所有非靜態的對象數據成員,它們對應的類中有構造函數(可以是用戶定義的構造函數,或編譯器提供的默認構造函數)。

Ⅶ Hive是什麼

此外,hive也支持熟悉map-rece的開發者使用map-rece程序對數據做更加復雜的分析。 hive可以很好的結合thrift和控制分隔符,也支持用戶自定義分隔符。 hive基於hadoop,hadoop是批處理系統,不能保存低延遲,因此,hive的查詢也不能保證低延遲。 hive的工作模式是:提交一個任務,等到任務結束時被通知,而不是實時查詢。相對應的是,類似於Oracle這樣的系統當運行於小數據集的時候,響應非常快,可當處理的數據集非常大的時候,可能需要數小時。需要說明的是,hive即使在很小的數據集上運行,也可能需要數分鍾才能完成。 低延遲不是hive追求的首要目標。

Ⅷ 我想學習hive,請問安裝hive之前,必須安裝centos、hadoop、java這些嗎

安裝需要
java 1.6,java 1.7或更高版本。
Hadoop 2.x或更高, 1.x. Hive 0.13 版本也支持 0.20.x, 0.23.x
linux,mac,windows操作系統。以下內容適用於linux系統。
安裝打包好的hive
需要先到apache下載已打包好的hive鏡像,然後解壓開該文件
$ tar -xzvf hive-x.y.z.tar.gz

設置hive環境變數
$ cd hive-x.y.z$ export HIVE_HOME={{pwd}}

設置hive運行路徑
$ export PATH=$HIVE_HOME/bin:$PATH

編譯Hive源碼
下載hive源碼
此處使用maven編譯,需要下載安裝maven。

以Hive 0.13版為例
編譯hive 0.13源碼基於hadoop 0.23或更高版本
$cdhive$mvncleaninstall-Phadoop-2,dist$cdpackaging/target/apache-hive-{version}-SNAPSHOT-bin/apache-hive-{version}-SNAPSHOT-bin$lsLICENSENOTICEREADME.txtRELEASE_NOTES.txtbin/(alltheshellscripts)lib/(requiredjarfiles)conf/(configurationfiles)examples/(sampleinputandqueryfiles)hcatalog/(hcataloginstallation)scripts/(upgradescriptsforhive-metastore)
編譯hive 基於hadoop 0.20
$cdhive$antcleanpackage$cdbuild/dist#lsLICENSENOTICEREADME.txtRELEASE_NOTES.txtbin/(alltheshellscripts)lib/(requiredjarfiles)conf/(configurationfiles)examples/(sampleinputandqueryfiles)hcatalog/(hcataloginstallation)scripts/(upgradescriptsforhive-metastore)
運行hive
Hive運行依賴於hadoop,在運行hadoop之前必需先配置好hadoopHome。
export HADOOP_HOME=<hadoop-install-dir>

在hdfs上為hive創建\tmp目錄和/user/hive/warehouse(akahive.metastore.warehouse.dir) 目錄,然後你才可以運行hive。
在運行hive之前設置HiveHome。
$ export HIVE_HOME=<hive-install-dir>

在命令行窗口啟動hive
$ $HIVE_HOME/bin/hive

若執行成功,將看到類似內容如圖所示

Ⅸ Hive 資料庫表的基本操作,必須掌握的基本功

說明:hive 的表存放位置模式是由 hive-site.xml 當中的一個屬性指定的,默認是存放在該配置文件設置的路徑下,也可在創建資料庫時單獨指定存儲路徑。

資料庫有一些描述性的屬性信息,可以在創建時添加:

查看資料庫的鍵值對信息

修改資料庫的鍵值對信息

與mysql查詢語句是一樣的語法

刪除一個空資料庫,如果資料庫下面有數據表,那麼就會報錯

強制刪除資料庫,包含資料庫下面的表一起刪除(請謹慎操作)


[]里的屬性為可選屬性,不是必須的,但是如果有可選屬性,會使 sql 語句的易讀性更好,更標准與規范。

例如:[comment '欄位注釋信息'][comment '表的描述信息']等,[external]屬性除外


1. CREATE TABLE
創建一個指定名字的表,如果相同名字的表已存在,則拋出異常提示:表已存在,使用時可以使用IF NOT EXISTS語句來忽略這個異常。

如果創建的表名已存在,則不會再創建,也不會拋出異常提示:表已存在。否則則自動創建該表。


2. EXTERNAL
顧名思義是外部的意思,此關鍵字在建表語句中讓使用者可以創建一個外部表,如果不加該關鍵字,則默認創建內部表。

外部表在創建時必須同時指定一個指向實際數據的路徑(LOCATION),Hive在創建內部表時,會將數據移動到數據倉庫指向的路徑;

若創建外部表,僅記錄數據所在的路徑,不對數據的位置作任何改變。

內部表在刪除後,其元數據和數據都會被一起刪除。
外部表在刪除後,只刪除其元數據,數據不會被刪除。


3. COMMENT
用於給表的各個欄位或整張表的內容作解釋說明的,便於他人理解其含義。


4. PARTITIONED BY
區分表是否是分區表的關鍵欄位,依據具體欄位名和類型來決定表的分區欄位。


5. CLUSTERED BY
依據column_name對表進行分桶,在 Hive 中對於每一張表或分區,Hive 可以通過分桶的方式將數據以更細粒度進行數據范圍劃分。Hive採用對列值哈希,然後除以桶的個數求余的方式決定該條記錄存放在哪個桶當中。


6. SORTED BY
指定表數據的排序欄位和排序規則,是正序還是倒序排列。


7. ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '
指定表存儲中列的分隔符,這里指定的是' ',也可以是其他分隔符。


8. STORED AS SEQUENCEFILE|TEXTFILE|RCFILE
指定表的存儲格式,如果文件數據是純文本格式,可以使用STORED AS TEXTFILE,如果數據需要壓縮,則可以使用STORED AS SEQUENCEFILE。


9. LOCATION
指定 Hive 表在 hdfs 里的存儲路徑,一般內部表(Managed Table)不需要自定義,使用配置文件中設置的路徑即可。
如果創建的是一張外部表,則需要單獨指定一個路徑。


1. 使用create table語句創建表
例子:


2. 使用create table ... as select...語句創建表
例子:

使用 create table ... as select ...語句來創建新表sub_student,此時sub_student 表的結構及表數據與 t_student 表一模一樣, 相當於直接將 t_student 的表結構和表數據復制一份到 sub_student 表。


注意:
(1). select 中選取的列名(如果是 * 則表示選取所有列名)會作為新表 sub_student 的列名。

(2). 該種創建表的方式會改變表的屬性以及結構,例如不能是外部表,只能是內部表,也不支持分區、分桶。

如果as select後的表是分區表,並且使用select *,則分區欄位在新表裡只是作為欄位存在,而不是作為分區欄位存在。

在使用該種方式創建時,create 與 table 之間不能加 external 關鍵字,即不能通過該種方式創建外部目標表,默認只支持創建內部目標表。

(3). 該種創建表的方式所創建的目標表存儲格式會變成默認的格式textfile。


3.使用like語句創建表
例子:


注意:
(1). 只是將 t_student 的表結構復制給 sub1_student 表。

(2). 並不復制 t_student 表的數據給 sub1_student 表。

(3). 目標表可以創建為外部表,即:

Ⅹ 怎樣只編譯hive的一個component

windows自帶的記事本只能做編輯源代碼使用,要編譯需要有編譯器才行,找些其他的集成化軟體,編輯編譯連接調試集成一體的,如vc6.0,wintc等

閱讀全文

與hive編譯所需相關的資料

熱點內容
pdf中圖片修改 瀏覽:267
匯編編譯後 瀏覽:472
php和java整合 瀏覽:827
js中執行php代碼 瀏覽:439
國產單片機廠商 瀏覽:56
蘋果手機怎麼設置不更新app軟體 瀏覽:283
轉行當程序員如何 瀏覽:491
蘋果id怎麼驗證app 瀏覽:863
查看手機命令 瀏覽:952
抖音反編譯地址 瀏覽:224
如何加密軟體oppoa5 瀏覽:232
java從入門到精通明日科技 瀏覽:93
拆解汽車解壓視頻 瀏覽:596
新版百度雲解壓縮 瀏覽:591
android上下拉刷新 瀏覽:879
centos可執行文件反編譯 瀏覽:837
林清玄pdf 瀏覽:270
黑馬程序員java基礎 瀏覽:283
awss3命令 瀏覽:358
百度店鋪客戶訂單手機加密 瀏覽:501