2017-07-18 12 views
0

XML SerDeを持つXMLファイルからHIVE(Hive 2.1.1-mapr-1703)を使用して外部テーブルを作成します。このファイルは、W3CコンソーシアムのXML exampleです。HIVE XML SerDe:例外が発生しました。java.io.IOException:java.lang.NullPointerException

これは、テーブルを作成するために私のコードです:

add jar /mapr/localpath/hivexmlserde-1.0.5.3.jar; 
USE my_db; 
CREATE EXTERNAL TABLE frank_books (
category STRING, 
title STRING, 
language STRING, 
year BIGINT 
) 
ROW FORMAT SERDE 'com.ibm.spss.hive.serde2.xml.XmlSerDe' 
WITH SERDEPROPERTIES (
"column.xpath.category" = "/book/@category", 
"column.xpath.title" = "/book/title/text()", 
"column.xpath.language" = "/book/title/@lang", 
"column.xpath.year"  = "/book/year/text()" 
) 
STORED AS 
INPUTFORMAT 'com.ibm.spss.hive.serde2.xml.XmlInputFormat' 
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat' 
LOCATION '/mapr/localpath/database_files/xml_example' 
TBLPROPERTIES (
"xmlinput.start" = "<book category", 
"xmlinput.stop" = "</book>" 
) 

説明文がエラーにつながらないので、テーブル自体が存在している:

describe frank_books; 

次のリード線のような単純なselect文〜NullPointerException

select * from my_db.frank_books; 

これは出力です:

OK 
Failed with exception java.io.IOException:java.lang.NullPointerException 
Time taken: 1.117 seconds 

誰でも助けてください、エラーを私に説明できますか?

ありがとう、フランク

答えて

0

MapR固有のものがありますか?

hive> DROP TABLE IF EXISTS xml_45158949; 
OK 
Time taken: 0.977 seconds 
hive> 
    > CREATE TABLE xml_45158949(
    > category STRING, 
    > title STRING, 
    > language STRING, 
    > year BIGINT 
    >) 
    > ROW FORMAT SERDE 'com.ibm.spss.hive.serde2.xml.XmlSerDe' 
    > WITH SERDEPROPERTIES(
    > "column.xpath.category" = "/book/@category", 
    > "column.xpath.title" = "/book/title/text()", 
    > "column.xpath.language" = "/book/title/@lang", 
    > "column.xpath.year"  = "/book/year/text()" 
    > ) 
    > STORED AS 
    > INPUTFORMAT 'com.ibm.spss.hive.serde2.xml.XmlInputFormat' 
    > OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat' 
    > TBLPROPERTIES (
    > "xmlinput.start"="<book category", 
    > "xmlinput.end"="</book>" 
    >); 
OK 
Time taken: 0.243 seconds 
hive> 
    > load data local inpath '/Users/dvasilen/Misc/XML/45158949.xml'  OVERWRITE into table xml_45158949; 
Loading data to table default.xml_45158949 
OK 
Time taken: 0.153 seconds 
hive> 
    > select * from xml_45158949; 
    OK 
cooking  Everyday Italian en 2005 
children Harry Potter en 2005 
web  XQuery Kick Start en 2003 
web  Learning XML en 2003 
Time taken: 0.08 seconds, Fetched: 4 row(s) 
hive> 

私のために働くようです。

+0

元の例では、**外部表**の作成について説明しました。 _dvasilen_で記述された内部テーブルの作成も再現しました。 _dvasilien_は彼のセットアップでうまくいくと書いていますが、同じエラーが出ます。これは、MapR固有のものか、HIVE1.xではなくHIVE2と関係があることを意味します。誰かがHIVE2 **と一緒に** XML-serdeの経験を持っていますか? – Frank

+0

FWIW、セットアップでハイブ2だった... $ hive --version ハイブ2.1.1 – dvasilen

関連する問題