1. 背景
????????hive是基于hadoop的一個數(shù)據(jù)倉庫工具,用來進(jìn)行數(shù)據(jù)提取、轉(zhuǎn)化、加載,這是一種可以存儲、查詢和分析存儲在Hadoop中的大規(guī)模數(shù)據(jù)的機(jī)制。hive數(shù)據(jù)倉庫工具能將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供sql查詢功能,能將sql轉(zhuǎn)變成MapReduce任務(wù)來執(zhí)行。Hive的優(yōu)點是學(xué)習(xí)成本低,可以通過類似SQL語句實現(xiàn)快速MapReduce統(tǒng)計,使MapReduce變得更加簡單,而不必開發(fā)專門的MapReduce應(yīng)用程序。hive是十分適合數(shù)據(jù)倉庫的統(tǒng)計分析和Windows注冊表文件。
? ? ? ? hive要跑起來,需要搭建集群,hadoop集群,配置metastore, sentry,還需要mysql數(shù)據(jù)庫,十分繁瑣,不利于初學(xué)者快速學(xué)習(xí)代碼。? ??
2. 目標(biāo)
? ? ? ? 本文的目標(biāo)在于介紹hive的本地調(diào)試模式,讓hive能在本地跑起來,在IDE中進(jìn)行debug,不需要配置一大堆繁瑣的東西。
3. Hive本地調(diào)試模式配置
3.1 配置java環(huán)境
? ? java環(huán)境的配置,網(wǎng)上參考資料不多說。下載jdk,配置java環(huán)境變量:
export JAVA_HOME=/home/me/jdk-8u231-linux-x64/jdk1.8.0_231
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
3.2 配置hadoop環(huán)境
????不需要安裝hadoop,只需下載hadoop,并解壓到本地。然后配置HADOOP_HOME環(huán)境:export HADOOP_HOME=/home/me/hadoop-2.10.0
3.3 配置hive調(diào)試模式:
????????首先編譯hive包,然后執(zhí)行下面的腳本。下面腳本表示導(dǎo)入hive的配置,然后啟動。/home/me/Desktop/code/hive/packaging/target/apache-hive-1.2.2-mdh1.2.2.0-SNAPSHOT-bin為hive編譯后包所在的目錄。
export HIVE_OPTS='--hiveconf hive.conf.restricted.list=mapred.max.split.size,hive.security.authenticator.manager,hive.security.authorization.manager,hive.users.in.admin.role,mapreduce.input.fileinputformat.split.maxsize --hiveconf mapred.job.tracker=local --hiveconf hive.conf.validation=false --hiveconf fs.default.name=file:///home/me --hiveconf hive.metastore.warehouse.dir=file:///home/me/warehouse --hiveconf javax.jdo.option.ConnectionURL=jdbc:derby:;databaseName=/home/me/warehouse/metastore_db;create=true'
export HIVE_HOME=/home/me/Desktop/code/hive/packaging/target/apache-hive-1.2.2-mdh1.2.2.0-SNAPSHOT-bin/apache-hive-1.2.2-mdh1.2.2.0-SNAPSHOT-bin
/home/me/Desktop/code/hive/packaging/target/apache-hive-1.2.2-mdh1.2.2.0-SNAPSHOT-bin/apache-hive-1.2.2-mdh1.2.2.0-SNAPSHOT-bin/bin/hive --debug -hiveconf hive.support.sql11.reserved.keywords=false -hiveconf hive.root.logger=INFO,console -hiveconf hive.cbo.enable=false -hiveconf hive.reloadable.aux.jars.path=/home/me/hive-extends
????????啟動后會輸出一下信息,包括了代理端口:
Listening for transport dt_socket at address: 8000
3.4 IDE配置調(diào)試
在InteliJ中Run->Debug->Edit configuration,添加一個Remote類型的配置,指定IP和端口即可。之后可以打斷點,執(zhí)行debug,然后在Terminator中輸入查詢語句,進(jìn)行調(diào)試了