1. 程式人生 > >hive載入json格式檔案的方法

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了)