1
我想将xml文件加载到配置单元表中。我正在使用xml serde here。我能够加载简单的平面XML文件。但是当xml中有嵌套元素时,我使用配置单元复杂数据类型来存储它们(例如,array<struct>
)。以下是我正在尝试加载的示例xml。我的目标是将所有元素,属性和内容加载到配置单元表中。XML架构到Hive架构
<description action="up">
<name action="aorup" ln="te">
this is name1
</name>
<name action="aorup" ln="tm">
this is name2
</name>
<name action="aorup" ln="hi">
this is name2
</name>
</description>
蜂巢输出...
{action:"up", name:[{action:"aorup", ln:"te", content:"this is name1"}, {action:"aorup", ln:"tm", content:"this is name2"}, {action:"aorup", ln:"hi", content:"this is name3"}]}
我想这整个XML加载到一个单一的蜂房列。我试过以下内容:
CREATE TABLE description(
description STRUCT<
Action:STRING,
name:ARRAY<STRUCT<
Action:STRING, ln:STRING, content:STRING
>>
>)
ROW FORMAT SERDE 'com.ibm.spss.hive.serde2.xml.XmlSerDe'
WITH SERDEPROPERTIES (
"xml.processor.class"="com.ximpleware.hive.serde2.xml.vtd.XmlProcessor",
"column.xpath.description"="/description")
STORED AS INPUTFORMAT 'com.ibm.spss.hive.serde2.xml.XmlInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat'
TBLPROPERTIES ("xmlinput.start"="<description ","xmlinput.end"= "</description>");
但是我得到空值为Label
字段。有人能帮我吗?
感谢
非常感谢您的回答。你能解释一下'create table'语句吗?这让我很困惑。我试着在这个问题上的另一个嵌套的XML模式[链接]的解决方案(https://stackoverflow.com/questions/44494364/complex-xml-schema-to-hive-schema)。但无法获得解决方案。 。你能解释我出错的地方吗? –