hive載入json格式檔案的方法
前言
很多日誌都採用json格式來記錄日誌,因此hive來讀表時候,就需要能解析json格式.
一.下載所需jar包,並且準備測試檔案
請到maven的官方倉庫去搜索 hive-hcatalog-core ,然後找到自己的hive版本的jar下載下來.
這裡假設我們下載下來,並且放到/opt/exlib/hive-hcatalog-core.jar
建立一個檔案,放到hdfs任意目錄用來測試(假設放在 hdfs下的/tmp/json1/jsontest.txt),檔案內容如下:
{"a":"tom","b":22222}
{"a":"jack","b":33333}
二.建立表的語句
進入hive
首先執行:
add jar /opt/exlib/hive-hcatalog-core.jar;
然後就可以建立表了,語句如下:
CREATE
TABLE
my_table(a
string, b
bigint
,
...)
ROW
FORMAT SERDE
'org.apache.hive.hcatalog.data.JsonSerDe'
LOCATION '/tmp/json1';
然後就可以使用select * from my_table 可以檢視到資料了.
三.解決每次進入hive或者spark-sql都要add jar的問題
雖然解決了問題,但是每次輸入查詢sql之前都要add一次jar,很麻煩.因此必須要解決這個問題,方法如下.
Spark-sql:
在/opt/spark/conf 中 加入如下配置:
export SPARK_CLASSPATH=$SPARK_CLASSPATH:/opt/exlib/hive-hcatalog-core-1.1.0-cdh5.5.0.jar
然後就可以直接在spark-sql中使用sql查詢了.(如果你使用jdbc連線查詢,請重啟spark/sbin/start-triftserver.sh,否則新增的jar包讀不到會報錯)
Hive:
在hive-site.xml中加入如下配置
<property>
<name>hive.aux.jars.path</name>
<value>file:///opt/exlib/hive-hcatalog-core.jar</value>
</property>
這樣就可以了 (未驗證,因為直接使用spark-sql了)