2016-01-14 52 views
0

我想在json文件上使用jsonserde的執行hive命令,但我總是得到空值,但不是實際的數據。我使用了「code.google.com/p/hive-json-serde/downloads/list」鏈接中提供的serde。我嘗試了多種方式,但所有的嘗試都沒有成功。請能有人幫我應遵循和具體步驟SERDE的,爲了與阿帕奇蜂巢JSON文件工作最新版本(0.14)簡單的JSON文件分析Hive-0.14使用serde

BR, 聖使用

回答

0

這裏有幾個簡單的步驟在蜂巢

  1. 玩弄JSON創建一個蜂巢表表格

    CREATE EXTERNAL TABLE IF NOT EXISTS json_table (
        field1 string COMMENT 'This is a field1', 
        field2 int COMMENT 'This is a field2', 
        field3 string COMMENT 'This is a field3', 
        field4 double COMMENT 'This is a field4' 
    ) 
    ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' 
    Location '/path/to/json_table'; 
    
  2. 的樣本數據。將以下內容複製到json文件中並存儲到json_table指向的文件位置。

    {"field1":"data1","field2":100,"field3":"more data1","field4":123.001} 
    {"field1":"data2","field2":200,"field3":"more data2","field4":123.002} 
    {"field1":"data3","field2":300,"field3":"more data3","field4":123.003} 
    {"field1":"data4","field2":400,"field3":"more data4","field4":123.004} 
    
  3. 確保JSON SERDE jar文件在HIVE類路徑中添加。在這個例子中,我們使用了openx json serde。它可以從here

    命令下載到添加JAR

    ADD JAR /path-to/json-serde-1.3.6-jar-with-dependencies.jar; 
    
  4. 現在我們可以從json_table

    select * from json_table; 
    
+0

查詢條目,您應該提到,您的意見使用不同SERDE ,可以在這裏下載http://www.congiu.net/hive-json-serde/ –

+0

同意。對於我的示例,我使用的是http://www.congiu.net/hive-json-serde/中的JSON Serde。但是你也可以使用其他的serde實現,並且必須注意在表創建腳本中提及serde類的名字。 – Shivaprasad

+0

我仍然無法解決這個問題,當我按照上面提到的程序進行操作時,出現錯誤。 「java.lang.NoClassDefFoundError:org/openx/data/jsonserde/json/JSONException \t at java.lang.Class.forName0(Native Method) \t at java.lang.Class.forName(Class.java:249) \t在org.apache.hadoop.hive.serde2.SerDeUtils.lookupDeserializer(SerDeUtils.java:84) \t在org.apache.hadoop.hive.ql.exec.DDLTask.validateSerDe(DDLTask.java:3463) \t在org.apache.hadoop.hive.ql.exec.DDLTask.createTable(DDLTask.java:3590) \t at 「 – sanumala