1.修改默認的數(shù)據(jù)倉庫位置,在hive-site.xml文件中配置如下參數(shù):
<property>
? ? ?<name>hive.metastore.warehouse.dir</name>
? ? ?<value>自己指定倉庫位置(eg:/user/hive/warehouse)</value>
</property>
添加好參數(shù)以后,需要對指定的目錄附上用戶組的權(quán)限,執(zhí)行以下命令:
$ $HADOOP_HOME/bin/hadoop fs -mkdir? ? ? /tmp
$ $HADOOP_HOME/bin/hadoop fs -mkdir? ? ? /user/hive/warehouse(刪除原來的目錄)
$ $HADOOP_HOME/bin/hadoop fs -chmod g+w? /tmp
$ $HADOOP_HOME/bin/hadoop fs -chmod g+w? /user/hive/warehouse(自己新的目錄)
2.配置Hive運行日志信息的存放位置,執(zhí)行如下命令:
mv? hive-log4j.properties.template ? ? ?hive-log4j.properties
修改這兩個參數(shù)
hive.log.dir=/opt/modules/hive-0.13.1/logs(log存放的位置)
hive.log.file=hive.log(log文件的名字)
3.指定log日志的現(xiàn)實級別,修改如下參數(shù):
hive.root.logger=INFO,DRFA
4.在HIve的 cli命令行上顯示當前數(shù)據(jù)庫,以及查詢表的行頭信息,在hive-site.xml文件下增加如下參數(shù):
<property>
? ? ? <name>hive.cli.print.header</name>
? ? ? <value>true</value>
</property>
<property>
? ? ? <name>hive.cli.print.current.db</name>
? ? ? <value>true</value>
</property>
5.在Hive啟動的時候配置一些參數(shù)信息,改配置只對本次會話起作用。執(zhí)行如下命令:
$ bin/hive --hiveconf ? <property=value>
6.在hive的客戶端執(zhí)行hdfs的操作命令,執(zhí)行如下命令:
dfs -ls / ?查看hive的信息
dfs -rm -R ? /... ? ? 刪除執(zhí)行文件
7.hive中常見的幾種SQL操作方式:
bin/hive ? -e ? ?"select * from test"
bin/hive ? -f ? ? /usr/datas/hiveq.sql ? ? ? ? 以腳本的方式執(zhí)行SQL語句
bin/hive? -f? ? /usr/datas/hiveq.sql ? ?> ? ? ?/usr/data/result.txt ? ? 將執(zhí)行結(jié)果寫入指定的文件中
bin/hive ? -I ? ? ? <filename> ? ? ? 初始化使用,通常與UDF配合使用 ? ? ?
8.在Hive中操作本地文件系統(tǒng),只需要在命令前面加一個“!”即可
9.關(guān)于分區(qū)表的一些操作:
? ? 1>創(chuàng)建一個分區(qū)表:
? ? ? ? ?create ?table ?test(
? ? ? ? ? ? ? ?username ? ? string,
? ? ? ? ? ? ? ?password ? ? ?string
? ? ? ? ?)
? ? ? ? ?partitioned by (month string)
? ? ? ? ?row format delimited fields termsnated by '\t'
? ? ? 2>加載本地數(shù)據(jù)到一個分區(qū)表中:
load data local inpath '/usr/test/1.data' ?into ?table ?test ?partition (month='201304')
? ? ? 3>修復分區(qū)表的兩種操作:
1??. ? msck ?repair ?table ?test;
2??. ?alter ?table ?test ?add ?partition(month='201303'); ? ? ? ?這種更加常用
10.將Hive中的數(shù)據(jù)導出到本地:
insert ?overwrite ?local ?directory ?‘/usr/datas/hive-test'?
ROW FORMAT DELIMITED ?FIELDS ?TERMINATED BY '\t' (指定導出時的字段之間格式)
COLLECTION ITEMS TERMINATED BY '\n' ?(指定導出時行之間的格式)
select * ?from ?test;
11.order by,sort by,distributed by,cluster by的區(qū)別:
order by:這個是對全局排序
sort by:這個是在reduce 中進行的局部排序
distributed by:這個類似于mapreduce中的partition,常常配合sort by一塊使用,且sort by 放在后面
cluster by:當sort by 和distributed by 的字段相同時,使用cluster by代替
12.UDF編程實用方式:
? ? 1>第一種方式:將編寫的java打包成jar文件,然后在hive客戶端執(zhí)行如下命令:
add ?jar ?/usr/datas/hiveudf.jar ? ? ? ? 添加jar到當前運行的hive中
create ?temporary ?function ?my_lower ?as ?"com.test.hive.udf.LowerUDF"; ?創(chuàng)建一個函數(shù)
2>第二種方式:同樣將java打包成jar然后運行如下命令(注意,這里的jar要上傳到hdfs):
create? function? my_lower as "com.test.hive.udf.LowerUDF" using jar 'hdfs://master:8020/datas/hiveudf.jar;
總結(jié):以上為對Hive的一些簡單操作,后續(xù)不斷更新,請關(guān)注。。。