解析 XML 并存储在 Hive table
Parse XML and store in Hive table
我正在使用 XPath 使用 pig 解析 XML,但在我的用例中我必须解析整个xml 文件并将其移动到 hive table。我正在考虑使用 XPath 来解析 XML 文件,而不是使用 pig 将解析后的数据移动到配置单元 table。但是还有其他方法吗?
我们可以使用 hivexmlserde 在 Hive 中解析 XML 文件。
使用 hivexmlserde 创建一个外部 Hive table 并将所有 xml 文件放在该 xml 位置(所有 xml 文件应该相似).使用此 serde,您需要在 create table 语句和要获取的属性的 XPath 中定义开始和结束标记。
请看下面的例子。
add jar /home/udf_jars/hivexmlserde-1.0.5.3.jar;
CREATE EXTERNAL TABLE hive_test_xml(
col1 string,
col2 string,
col3 string
)
ROW FORMAT SERDE 'com.ibm.spss.hive.serde2.xml.XmlSerDe'
WITH SERDEPROPERTIES (
"column.xpath.col1"="/Books/col1/text()",
"column.xpath.col2"="/Books/col2/text()",
"column.xpath.col3"="/Books/col3/text()"
)
STORED AS
INPUTFORMAT 'com.ibm.spss.hive.serde2.xml.XmlInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat'
LOCATION ' /user/user1/xml/data'
TBLPROPERTIES (
"xmlinput.start"="<Books",
"xmlinput.end"="</Books>");
更多详细信息,请访问Hive-XML-Options link了解更多。
更新:如何select来自table的数据。
您需要在查询前添加hivexmlserde-1.0.5.3.jar
。请看下面的例子。
hive> add jar /path/to/jar/hivexmlserde-1.0.5.3.jar;
Added [add jar /path/to/jar/hivexmlserde-1.0.5.3.jar] to class path
Added resources: [add jar /path/to/jar/hivexmlserde-1.0.5.3.jar]
hive> use mydatabase_name;
OK
Time taken: 0.021 seconds
hive> select * from xm_table;
你也可以永久设置这个jar,避免查询前一直添加。请关注下方link
Adding/Defining Jars in Hive permanently
我正在使用 XPath 使用 pig 解析 XML,但在我的用例中我必须解析整个xml 文件并将其移动到 hive table。我正在考虑使用 XPath 来解析 XML 文件,而不是使用 pig 将解析后的数据移动到配置单元 table。但是还有其他方法吗?
我们可以使用 hivexmlserde 在 Hive 中解析 XML 文件。
使用 hivexmlserde 创建一个外部 Hive table 并将所有 xml 文件放在该 xml 位置(所有 xml 文件应该相似).使用此 serde,您需要在 create table 语句和要获取的属性的 XPath 中定义开始和结束标记。
请看下面的例子。
add jar /home/udf_jars/hivexmlserde-1.0.5.3.jar;
CREATE EXTERNAL TABLE hive_test_xml(
col1 string,
col2 string,
col3 string
)
ROW FORMAT SERDE 'com.ibm.spss.hive.serde2.xml.XmlSerDe'
WITH SERDEPROPERTIES (
"column.xpath.col1"="/Books/col1/text()",
"column.xpath.col2"="/Books/col2/text()",
"column.xpath.col3"="/Books/col3/text()"
)
STORED AS
INPUTFORMAT 'com.ibm.spss.hive.serde2.xml.XmlInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat'
LOCATION ' /user/user1/xml/data'
TBLPROPERTIES (
"xmlinput.start"="<Books",
"xmlinput.end"="</Books>");
更多详细信息,请访问Hive-XML-Options link了解更多。
更新:如何select来自table的数据。
您需要在查询前添加hivexmlserde-1.0.5.3.jar
。请看下面的例子。
hive> add jar /path/to/jar/hivexmlserde-1.0.5.3.jar;
Added [add jar /path/to/jar/hivexmlserde-1.0.5.3.jar] to class path
Added resources: [add jar /path/to/jar/hivexmlserde-1.0.5.3.jar]
hive> use mydatabase_name;
OK
Time taken: 0.021 seconds
hive> select * from xm_table;
你也可以永久设置这个jar,避免查询前一直添加。请关注下方link
Adding/Defining Jars in Hive permanently