hive7編譯模塊
⑴ 大數據開發工具有哪些
1. Apache Hive
Hive是一個建立在Hadoop上的開源數據倉庫基礎設施,通過Hive可以很容易的進行數據的ETL,對數據進行結構化處理,並對Hadoop上大數據文件進行查詢和處理等。 Hive提供了一種簡單的類似sql的查詢語言—HiveQL,這為熟悉SQL語言的用戶查詢數據提供了方便。
2. Apache Spark
Apache Spark是Hadoop開源生態系統的新成員。它提供了一個比Hive更快的查詢引擎,因為它依賴於自己的數據處理框架而不是依靠Hadoop的HDFS服務。同時,它還用於事件流處理、實時查詢和機器學習等方面。
3. Jaspersoft BI 套件
Jaspersoft包是一個通過資料庫列生成報表的開源軟體。行業領導者發現Jaspersoft軟體是一流的, 許多企業已經使用它來將SQL表轉化為pdf,,這使每個人都可以在會議上對其進行審議。另外,JasperReports提供了一個連接配置單元來替代HBase。
4. Keen IO
Keen IO是個強大的移動應用分析工具。開發者只需要簡單到一行代碼, 就可以跟蹤他們想要的關於他們應用的任何信息。開發者接下來只需要做一些Dashboard或者查詢的工作就可以了。
5. Mortar Data
Mortar Data是專為開發者打造的Hadoop開發平台,它用Pig和Python的組合替代了MapRece以便開發者能簡單地編寫Hadoop管道(Pipeline)。
6. Placed Analytics
利用腳本語言以及API, PlacedAnalytics能夠提供針對移動和網路應用的詳細用戶行為分析。包括, 用戶使用時間和地理位置信息。 這些可以幫助開發者的應用更好地吸引廣告商, 也可以幫助開發者對自己的應用進行改善。
7. Ingres Corp
它擁有超過一萬客戶而且正在擴增。它通過Vectorwise以及對ParAccel實現了擴展。這些發展分別導致了Actian Vector和Actian Matrix的創建。它有Apache,Cloudera,Hortonworks以及其他發行版本可供選擇。
8. Talend Open Studio
Talend是一個統一的平台,它通過提供一個統一的,跨企業邊界生命周期管理的環境,使數據管理和應用更簡單便捷。這種設計可以幫助企業構建靈活、高性能的企業架構,在次架構下,集成並啟用百分之百開源服務的分布式應用程序變為可能。
9. Cloudera
Cloudera正在努力為開源Hadoop,提供支持,Hadoop可以作為目標數據倉庫,高效的數據平台,或現有數據倉庫的ETL來源。企業規模可以用作集成Hadoop與傳統數據倉庫的基礎。 Cloudera致力於成為數據管理的「重心」。
10. Pentaho Business Analytics
Pentaho的工具可以連接到NoSQL資料庫,有很多內置模塊,可以把它們拖放到一個圖片上, 然後將它們連接起來。
⑵ hive怎麼實現update操作
1、要想使用Hive首先需要啟動hadoop,因為hive的使用是依賴於hadoop的hdfs文件系統以及MapRece計算的,下圖是啟動hadoop,如下圖。
⑶ centos7中hive配置怎麼搞這些步驟
可以看下我的博客:網頁鏈接
⑷ hiveos能用u盤做系統嗎
hiveos能用u盤做系統。
例如製作好win7或8.1或10的安裝U盤,插在電腦上,打開VM,選中要重新安裝的虛擬機,然後選擇編輯虛擬機設置,然後點添加-硬碟,按兩個下一步後點選使用物理磁碟(適用於高級用戶)。
把U盤插到要裝系統的電腦上,開機之後一直按delete(F12、F2、F9,根據電腦不同略有不同)進入BOIS設置,在boot項(也有的寫著startup)里把first boot device 設置為USB(或者帶有USB的字項,按F10保存。
無驅型:
無驅動型產品可在Windows 98/Me/2000/XP及支持USB Mass Storage協議的linux、Mac OS等系統下正常使用,且僅在Windows 98系統下需要安裝驅動程序,在Windows Me以上的操作系統中均不需要安裝驅動程序即可被系統正確識別並使用。
真正體現了USB設備「即插即用」的方便之處。市場上大多數U盤都是無驅動型,用戶有很大的選擇餘地,愛國者、聯想、金邦、朗科等公司的U盤都是不錯的選擇。
⑸ 我想學習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定義一個自定義函數類時,需要繼承以下哪個類
一個類一定要進行初始化的啊 如果一個類中沒有定義任何的構造函數,那麼編譯器只有在以下三種情況,才會提供默認的構造函數:1、如果類有虛擬成員函數或者虛擬繼承父類(即有虛擬基類)時;2、如果類的基類有構造函數(可以是用戶定義的構造函數,或編譯器提供的默認構造函數);3、在類中的所有非靜態的對象數據成員,它們對應的類中有構造函數(可以是用戶定義的構造函數,或編譯器提供的默認構造函數)。
⑺ hive.optimize.index.filter設置我true,tez查詢udf函數報錯
流程錯誤。
1、新建一個java項目,新建lib項目。
2、將hive集群下面的lib文件夾下面的所有jar(除開php,py)拷貝到lib下面。
3、將jar添加到依賴管理。
4、新建udf類。
5、將項目打成。
6、注意一般工具打包都會給jar延簽,使用者有許可權驗證,所以需要刪除許可權認證,在linux上面執行。進入hive控制台:addjar/home/hive/jar/udf.jar;--你自己的路徑。
7、創建臨時函數。
8、使用函數:selectudftests(20,40)。
9、至此就是一個完整的建立udf的流程,如果要建立永久函數。那麼需要將jar放到hdfs或者配置:createfunctionudf_numberAS'com.udf.test.UdfTest'usingjar'hdfs:///hive_jar/udf.jar'。
注意這里不要加ip和埠,如果遠程創建才需要,本地集群只需要hdfs:///就可以了。
或者hive-env.sh配置文件中添加HIVE_AUX_JARS_PATH。
⑻ hive查詢時間復雜度
1、使用Tez引擎
Apache Tez Engine是一個可擴展的框架,用於構建高性能批處理和互動式數據處理。它由YARN在Hadoop中 調度。Tez通過提高處理速度和保持MapRece擴展到數PB數據的能力來改進MapRece job。
通過設置hive.execution.engine 為tez:可以在環境中啟用Tez引擎:
set hive.execution.engine=tez;
2、使用向量化
向量化通過在單個操作中獲取 1024 行而不是 每次只獲取單行來改善 scans, aggregations, filters 和 join 這類操作的性能。
我們可以通過執行以下命令在環境中啟用向量化:
set hive.vectorized.execution.enabled=true;
set hive.vectorized.execution.rece.enabled=true;
3、使用ORCFile
Hive 支持 ORCfile,這是一種新的表存儲格式,在讀取,寫入和處理數據時,ORCFile格式優於Hive文件格式,它通過 predicate push-down, compression 等技術來提高查詢速度。
在 HIVE 表中使用 ORCFile,將有益於獲得 HIVE 快速響應的查詢。
ORCFile 格式通過對原始數據存儲量壓縮75%,提供了高效的存儲 Hive 數據的方法。
舉例,考慮兩個大表 A 和 B(存儲為 TextFIle,這里沒有指定一些列),使用一個簡單的查詢,如:
SELECT A.customerID,
A.name,
A.age,
A.address
JOIN B.role,
B.department,
B.salary ON A.customerID=B.customerID;
由於表 A 和表 B 都存儲為 TextFile,因此執行此查詢可能需要很長時間。
將這些表存儲格式轉換為 ORCFile 格式通常會明顯減少查詢時間:
CREATE TABLE A_ORC (
customerID int,
name string,
age int,
address string
) STORED AS ORC tblproperties (「orc.compress" = 「SNAPPY」)
;
INSERT INTO TABLE A_ORC
SELECT *
FROM A
;
CREATE TABLE B_ORC (
customerID int,
ROLE string,
salary float,
department string
) STORED AS ORC tblproperties (「orc.compress" = 「SNAPPY」)
;
INSERT INTO TABLE B_ORC
SELECT *
FROM B
;
SELECT A_ORC.customerID,
A_ORC.name,
A_ORC.age,
A_ORC.address
JOIN B_ORC.role,
B_ORC.department,
B_ORC.salary ON A_ORC.customerID=B_ORC.customerID
;
ORC 支持壓縮存儲(使用 ZLIB 或如上所示使用 SNAPPY),但也支持不壓縮存儲。
4、使用分區
通過分區,數據存儲在 HDFS 上的單獨單個文件夾中。Hive 將查詢分區數據集,而不是 掃描表的所有數據集。
創建臨時表並將數據載入到臨時表中
CREATE TABLE Employee_Temp(
EmloyeeID int,
EmployeeName Varchar(100),
Address Varchar(100),
STATE Varchar(100),
City Varchar(100),
Zipcode Varchar(100)
) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE;
LOAD DATA INPATH '/home/hadoop/hive' INTO TABLE Employee_Temp;
創建分區表
Create Table Employee_Part(
EmloyeeID int,
EmployeeName Varchar(100),
Address Varchar(100),
State Varchar(100),
Zipcode Varchar(100))
PARTITIONED BY (City Varchar(100))
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
啟用動態分區的命令
SET hive.exec.dynamic.partition = true;
SET hive.exec.dynamic.partition.mode = nonstrict;
從臨時表導入數據到分區表
INSERT Overwrite TABLE Employee_Part Partition(City)
SELECT EmployeeID,
EmployeeName,
Address,
STATE,
City,
Zipcode
FROM Emloyee_Temp;
5、使用 分桶
桶表介紹:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL+BucketedTables
舉例:https://blog.csdn.net/m0_37534613/article/details/55258928
Hive 表被劃分為多個分區,稱為 Hive分區。Hive分區進一步細分為集群或桶,稱為 bucket 或 Cluster。
Create Table Employee_Part(
EmloyeeID int,
EmployeeName Varchar(100),
Address Varchar(100),
State Varchar(100),
Zipcode Varchar(100))
PARTITIONED BY (City Varchar(100))
Clustered By (EmployeeID) into 20 Buckets
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
6、CBO 查詢優化器
Hive CBO 是使用 Apache calcite 來處理的。
早期的 Hive 版本中(Hive-0.14 之前),在提交最終執行之前,Hive 會優化每個查詢的邏輯和物理執行計劃。 這些優化不是基於查詢的成本優化(Cost-based Optimizer) 。
直到 Hive-0.14 時才添加了 Cost-based optimization ,這時已經根據查詢的成本進行優化(例如要執行的連接類型,如何排序連接,並行度等)。
要使用基於成本的優化,需要在查詢開頭設置以下參數
set hive.cbo.enable=true;
set hive.compute.query.using.stats=true;
set hive.stats.fetch.column.stats=true;
set hive.stats.fetch.partition.stats=true;
如果要收集表信息,請使用 Analyze 命令。
7、寫好的 SQL
SQL是一種強大的聲明性語言。 與其他聲明性語言一樣,編寫SQL語句的方法不止一種。
盡管每個語句的功能都相同,但它可能具有截然不同的性能特徵。
我們來看一個例子。 考慮點擊流事件表:
CREATE TABLE clicks (
timestamp date, sessionID string, url string, source_ip string
) STORED as ORC tblproperties (「orc.compress」 = 「SNAPPY」);
每條記錄代表一次點擊事件,我們希望找到每個sessionID的最新網址。
有人可能會考慮以下方法:
SELECT clicks.* FROM clicks inner join
(select sessionID, max(timestamp) as max_ts from clicks
group by sessionID) latest
ON clicks.sessionID = latest.sessionID and
clicks.timestamp = latest.max_ts;
在上面的查詢中,我們構建一個子查詢來收集每個會話中最新事件的時間戳,然後使用 內聯接 來過濾掉其餘的事件。
雖然查詢是一個合理的解決方案, 但是從功能的角度來看 ,有一種更好的方法來重寫這個查詢,如下所示:
SELECT * FROM
(SELECT *, RANK() over (partition by sessionID,
order by timestamp desc) as rank
FROM clicks) ranked_clicks
WHERE ranked_clicks.rank=1;
在這里,我們使用 Hive 的 OLAP 窗口功能(OVER 和 RANK)來實現相同的功能。
顯然,刪除不必要的連接幾乎總能帶來更好的性能,而且當使用大數據時,這比以往任何時候都更重要。
我發現很多情況下查詢不是最優的 - 所以仔細查看每個查詢並考慮重寫是否可以使它更好更快。
————————————————
版權聲明:本文為CSDN博主「highfei2011」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/high2011/article/details/96271903
⑼ 程序中的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是什麼
此外,hive也支持熟悉map-rece的開發者使用map-rece程序對數據做更加復雜的分析。 hive可以很好的結合thrift和控制分隔符,也支持用戶自定義分隔符。 hive基於hadoop,hadoop是批處理系統,不能保存低延遲,因此,hive的查詢也不能保證低延遲。 hive的工作模式是:提交一個任務,等到任務結束時被通知,而不是實時查詢。相對應的是,類似於Oracle這樣的系統當運行於小數據集的時候,響應非常快,可當處理的數據集非常大的時候,可能需要數小時。需要說明的是,hive即使在很小的數據集上運行,也可能需要數分鍾才能完成。 低延遲不是hive追求的首要目標。