當前位置:首頁 » 編程軟體 » 編譯hive

編譯hive

發布時間: 2022-01-08 18:06:09

A. hue/oozie 調度shell執行hive腳本

前面已經有篇文章介紹如何編譯包含hive的spark-assembly.jar了,不清楚的可以翻看一下前面的文章。clouderamanager裝好的spark,直接執行spark-shell進入命令行後,寫入如下語句:valhiveContext=neworg.apache.spark.sql.hive.HiveContext(sc)你會發現沒法執行通過,因為cm裝的原生的spark是不支持sparkhql的,我們需要手動進行一些調整:第一步,將編譯好的包含hive的JAR包上傳到hdfs上配置的默認的spark的sharelib目錄:/user/spark/share/lib第二步:在你要運行spark-shell腳本的節點上的/opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/lib/spark/lib/目錄下面,下載這個jar到這個目錄:hadoopfs-gethdfs://n1:8020/user/spark/share/lib/spark-assembly-with-hive-maven.jar(具體路徑替換成你自己的)。然後這個目錄下面原來會有個軟鏈接spark-assembly.jar指向的是spark-assembly-1.2.0-cdh5.3.0-hadoop2.5.0-cdh5.3.0.jar,我們把這個軟鏈接刪除掉重新創建一個同名的軟鏈接:ln-sspark-assembly-with-hive-maven.jarspark-assembly.jar,指向我們剛下載下來的那個JAR包,這個JAR包會在啟動spark-shell腳本時裝載到driverprogram的classpath中去的,sparkContext也是在driver中創建出來的,所以需要將我們編譯的JAR包替換掉原來的spark-assembly.jar包,這樣在啟動spark-shell的時候,包含hive的spark-assembly就被裝載到classpath中去了。第三步:在/opt/cloudera/parcels/CDH/lib/spark/conf/目錄下面創建一個hive-site.xml。/opt/cloudera/parcels/CDH/lib/spark/conf目錄是默認的spark的配置目錄,當然你可以修改默認配置目錄的位置。hive-site.xml內容如下:hive.metastore.localfalsehive.metastore.uristhrift://n1:9083hive.metastore.client.socket.timeout300hive.metastore.warehouse.dir/user/hive/warehouse這個應該大家都懂的,總要讓spark找到hive的元數據在哪吧,於是就有了上面一些配置。第四步:修改/opt/cloudera/parcels/CDH/lib/spark/conf/spark-defaults.conf,添加一個屬性:spark.yarn.jar=hdfs://n1:8020/user/spark/share/lib/spark-assembly-with-hive-maven.jar。這個是讓每個executor下載到本地然後裝載到自己的classpath下面去的,主要是用在yarn-cluster模式。local模式由於driver和executor是同一個進程所以沒關系。以上完事之後,運行spark-shell,再輸入:valhiveContext=neworg.apache.spark.sql.hive.HiveContext(sc)應該就沒問題了。我們再執行一個語句驗證一下是不是連接的我們指定的hive元資料庫:hiveContext.sql("showtables").take(10)//取前十個表看看最後要重點說明一下這里的第二步第三步和第四步,如果是yarn-cluster模式的話,應該替換掉集群所有節點的spark-assembly.jar集群所有節點的sparkconf目錄都需要添加hive-site.xml,每個節點spark-defaults.conf都需要添加spark.yarn.jar=hdfs://n1:8020/user/spark/share/lib/spark-assembly-with-hive-maven.jar。可以寫個shell腳本來替換,不然手動一個一個節點去替換也是蠻累的。

B. hive的源代碼的編譯與調試怎麼做

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

C. hive的安裝配置

你可以下載一個已打包好的hive穩定版,也可以下載源碼自己build一個版本。
安裝需要 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-xzvfhive-x.y.z.tar.gz設置hive環境變數 $cdhive-x.y.z$exportHIVE_HOME={{pwd}}設置hive運行路徑 $exportPATH=$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。 exportHADOOP_HOME=<hadoop-install-dir>在hdfs上為hive創建 mp目錄和/user/hive/warehouse(akahive.metastore.warehouse.dir) 目錄,然後你才可以運行hive。
在運行hive之前設置HiveHome。 $exportHIVE_HOME=<hive-install-dir>在命令行窗口啟動hive $$HIVE_HOME/bin/hive若執行成功,將看到類似內容如圖所示

D. eclipse怎麼開發hive udf

Hive進行UDF開發十分簡單,此處所說UDF為Temporary的function,所以需要hive版本在0.4.0以上才可以。
Hive的UDF開發只需要重構UDF類的evaluate函數即可。例:
package com.hrj.hive.udf;
import org.apache.hadoop.hive.ql.exec.UDF;
public class helloUDF extends UDF {
public String evaluate(String str) {
try {
return "HelloWorld " + str;
} catch (Exception e) {
return null;
}
}
}

將該java文件編譯成helloudf.jar
hive> add jar helloudf.jar;
hive> create temporary function helloworld as 'com.hrj.hive.udf.helloUDF';
hive> select helloworld(t.col1) from t limit 10;
hive> drop temporary function helloworld;

註:
1.helloworld為臨時的函數,所以每次進入hive都需要add jar以及create temporary操作
2.UDF只能實現一進一出的操作,如果需要實現多進一出,則需要實現UDAF

E. hive1和hive2的區別

1.用戶介面:Client
CLI(hive shell)、JDBC/ODBC(java訪問hive)、WEBUI(瀏覽器訪問hive)

2.元數據:Metastore
元數據包括:表名、表所屬的資料庫(默認是default)、表的擁有者、列/分區欄位、表的類型(是否是外部表)、表的數據所在目錄等;
默認存儲在自帶的derby資料庫中,推薦使用MySQL存儲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中執行,最後,將執行返回的結果輸出到用戶交互介面。

二:Hive的作用和優勢:
基於Hadoop的數據倉庫解決方案
Hive是基於Hadoop的一個數據倉庫工具,將結構化的數據文件映射為資料庫表。

提供類sql的查詢語言HQL(Hive Query Language)

數據不放在hive上,放在HDFS上

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

執行程序運行在Yarn上

優勢:
提供了簡單的優化模型

HQL類sql語法,簡化MR開發

支持在HDFS和HBase上臨時查詢數據

支持用戶自定義函數,格式

成熟JDBC和ODBC驅動程序,用於ETL和BI

穩定可靠的批處理

支持在不同計算框架運行

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

迭代式演算法無法表達

數據挖掘方面不擅長

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

Hive調優比較困難,粒度較粗

F. spark sql怎麼處理hive的null

前面已經有篇文章介紹如何編譯包含hive的spark-assembly.jar了,不清楚的可以翻看一下前面的文章。
cloudera manager裝好的spark,直接執行spark-shell進入命令行後,寫入如下語句:
val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)

你會發現沒法執行通過,因為cm裝的原生的spark是不支持spark hql的,我們需要手動進行一些調整:
第一步,將編譯好的包含hive的JAR包上傳到hdfs上配置的默認的spark的sharelib目錄:/user/spark/share/lib


第二步:在你要運行spark-shell腳本的節點上的/opt/cloudera/parcels/CDH-
5.3.0-1.cdh5.3.0.p0.30/lib/spark/lib/目錄下面,下載這個jar到這個目錄:hadoop fs -get
hdfs://n1:8020/user/spark/share/lib/spark-assembly-with-hive-maven.jar(具
體路徑替換成你自己的)。然後這個目錄下面原來會有個軟鏈接spark-assembly.jar指向的是spark-assembly-1.2.0-
cdh5.3.0-hadoop2.5.0-cdh5.3.0.jar,我們把這個軟鏈接刪除掉重新創建一個同名的軟鏈接:ln -s
spark-assembly-with-hive-maven.jar
spark-assembly.jar,指向我們剛下載下來的那個JAR包,這個JAR包會在啟動spark-shell腳本時裝載到driver
program的classpath中去的,sparkContext也是在driver中創建出來的,所以需要將我們編譯的JAR包替換掉原來的
spark-assembly.jar包,這樣在啟動spark-shell的時候,包含hive的spark-assembly就被裝載到
classpath中去了。

G. 如何編譯hive_hbase-handler.jar

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

H. 我想學習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

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

熱點內容
mysql資料庫的語句 發布:2024-02-23 14:37:08 瀏覽:8
tlq伺服器是什麼意思 發布:2024-02-23 14:32:18 瀏覽:450
c語言搜索 發布:2024-02-23 14:16:12 瀏覽:372
javarsa密鑰對 發布:2024-02-23 14:11:31 瀏覽:222
國產安卓哪個系統最好 發布:2024-02-23 13:59:03 瀏覽:535
我們家裡的網路密碼是多少 發布:2024-02-23 13:50:24 瀏覽:903
it培訓java 發布:2024-02-23 13:49:43 瀏覽:997
編程布置 發布:2024-02-23 13:18:36 瀏覽:477
浪潮伺服器怎麼開機 發布:2024-02-23 12:33:37 瀏覽:662
聯想更新配置在哪個文件里 發布:2024-02-23 12:28:32 瀏覽:846