我需要将XML存储在HDFS中,并在该HDFS文件夹之上创建hive表。我一直在尝试使用此link
中提供的那个我使用Add jar命令从link下载后,将serde jar添加到配置单元。
ADD JAR hivexmlserde-1.0.5.3.jar
我也收到消息说"已添加到类路径"
列表罐子也证实了这一点。但是,当我尝试创建同一link中提到的表时,它失败并显示以下消息失败:SemanticExcepton找不到类 com.ibm.spss.hive.serde2.xml.XmlInputFormat
请帮助。
注意:我使用的是HDP 2.3
答案 0 :(得分:1)
我可以在HDP 2.3沙箱上创建表格。我理解这个问题。添加jar和list jar成功并不意味着jar可供你使用。
请按照以下步骤操作:
Login to the terminal
cd to the path where your jar file is
ls -ltr hivexmlserde-1.0.5.3.jar
Launch hive cli and perform following
hive> add jar hivexmlserde-1.0.5.3.jar;
Added [hivexmlserde-1.0.5.3.jar] to class path
Added resources: [hivexmlserde-1.0.5.3.jar]
hive> CREATE TABLE xml_bank(customer_id STRING, income BIGINT, demographics map<string,string>, financial map<string,string>)
> ROW FORMAT SERDE 'com.ibm.spss.hive.serde2.xml.XmlSerDe'
> WITH SERDEPROPERTIES (
> "column.xpath.customer_id"="/record/@customer_id",
> "column.xpath.income"="/record/income/text()",
> "column.xpath.demographics"="/record/demographics/*",
> "column.xpath.financial"="/record/financial/*"
> )
> STORED AS
> INPUTFORMAT 'com.ibm.spss.hive.serde2.xml.XmlInputFormat'
> OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat'
> TBLPROPERTIES (
> "xmlinput.start"="<record customer",
> "xmlinput.end"="</record>"
> );
OK
Time taken: 2.042 seconds
hive> select * from xml_bank;
OK
Time taken: 0.801 seconds
答案 1 :(得分:0)
为jar提供正确的权限和所有权,然后运行ADD命令。我不知道为什么它会这样运作!!!