我需要将 XML 存储在 HDFS 中并在该 HDFS 文件夹之上创建配置单元表。我一直在尝试使用此 link 中提供的那个
从 link 下载后,我已将 serde jar 添加到配置单元中使用添加 jar 命令。
ADD JAR hivexmlserde-1.0.5.3.jar
我还收到消息“已添加到类路径”
list jars 也证实了这一点。但是当我尝试创建相同的 link 中提到的表时, 它失败并显示以下消息
FAILED: SemanticExcepton cannot find class com.ibm.spss.hive.serde2.xml.XmlInputFormat
请帮忙。
注意:我使用的是HDP 2.3
最佳答案
我能够在 HDP 2.3 沙箱上创建表。我明白这个问题。添加 jar 和列出 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
关于xml - HDP 沙盒上的 Hive ADD JAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34406012/