<Search>
<Country>USA</Country>
<Region>West</Region>
<Address>
<Home>
<Item>
<id>Number</id>
<value>135</value>
</Item>
<Item>
<id>Street</id>
<value>Pacific</value>
</Item>
<Item>
<id>City</id>
<value>Irvine</value>
</Item>
</Home>
<Home>
<Item>
<id>Number</id>
<value>1672</value>
</Item>
<Item>
<id>Street</id>
<value>Madison</value>
</Item>
<Item>
<id>City</id>
<value>Denver</value>
</Item>
</Home>
</Address>
我试图创建下表结构,但我没有得到想要的结果
我试图创建下表结构,但我没有得到想要的结果我试图创建下表结构,但我没有得到想要的结果我试图创建下表结构,但我没有得到想要的结果
Country Region Map
USA West {Number:135,Street:Pacific,City:Irvine}
USA West {Number:1672,Street:Madison,City:Denver}
`CREATE EXTERNAL TABLE search(
country string,
region string,
search array<struct<item:map<string,string>>>
)
PARTITIONED BY(date STRING)
ROW FORMAT SERDE 'com.ibm.spss.hive.serde2.xml.XmlSerDe'
WITH SERDEPROPERTIES(
"column.xpath.country" = "/Search/country/text()",
"column.xpath.region" = "/Search/region/text()",
"column.xpath.item"="/Search/Address/Home/Item"
)
STORED AS
INPUTFORMAT 'com.ibm.spss.hive.serde2.xml.XmlInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat'
LOCATION '/search'
TBLPROPERTIES (
"xmlinput.start"="",
"xmlinput.end"=""
);
这是可能的或任何其他关于如何获得上述格式的数据的建议。任何帮助都会很好。谢谢你`
1条答案
按热度按时间0qx6xfy61#
考虑到xml,您所能做的最好的事情可能是:
以下是输出:
要了解要素:
要获得所需的输出:
你得把地板弄平
address
使用侧视图的阵列https://cwiki.apache.org/confluence/display/hive/languagemanual+lateralview