将hdfs上的xml文件插入配置单元Parquet表

mgdq6dx1  于 2021-05-29  发布在  Hadoop
关注(0)|答案(0)|浏览(216)

我有一个gzip 3gbsxml文件,我想Map到HiveParquet表。我使用xmlserde将该文件解析到临时外部表,然后使用insert将该数据插入到hive parquet表中(我希望该数据被放置在hive表中,而不是在hdfs上创建xml文件的接口)。
我想到了这个剧本:

CREATE TEMPORARY EXTERNAL TABLE temp_table (someData1 INT, someData2 STRING, someData3  ARRAY<STRING>)
ROW FORMAT SERDE 'com.ibm.spss.hive.serde2.xml.XmlSerDe'
WITH SERDEPROPERTIES (
"column.xpath.someData1" ="someXpath1/text()",
"column.xpath.someData2"="someXpath2/text()",
"column.xpath.someData3"="someXpath3/text()",   
)

STORED AS
INPUTFORMAT 'com.ibm.spss.hive.serde2.xml.XmlInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat'
LOCATION 'hdfs://locationToGzippedXmlFile'
TBLPROPERTIES (
"xmlinput.start"="<MyItem>",
"xmlinput.end"="</MyItem>"
 );

CREATE TABLE parquet_table 
STORED AS Parquet 
AS select * from temp_table

主要的一点是,我想有一个优化的方式来访问数据。我不想每个查询都解析xml,而是只解析一次整个文件,然后将结果放入parquet表中。运行上面的脚本需要无限的时间,另外在日志中,我可以看到只有一个Map器被使用。
我真的不知道这是否是正确的方法(也许用分区可以做到这一点?)
顺便说一句,我用的是cloudera的色调。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题