我有以下XML数据:
<CompactData><my:DataSet><my:Series VAL="A" AMOUNT_TYPE="FI" IDENTIFIER="1"><my:Obs AMT="24.25" UNIT_MEASURE="KG"></my:Obs></my:Series><my:Series VAL="B" AMOUNT_TYPE="GI" IDENTIFIER="2"><my:Obs AMT="21.22" UNIT_MEASURE="KG"></my:Obs></my:Series></my:DataSet></CompactData>
我正在尝试使用PIG中的以下命令将其转换为CSV格式:
A = LOAD '/testing/mydata.xml' using org.apache.pig.piggybank.storage.XMLLoader('CompactData') as (x:chararray);
B = FOREACH A GENERATE FLATTEN(REGEX_EXTRACT_ALL(x,'<my:Series VAL="([^"]+)" AMOUNT_TYPE="([^"]+)" IDENTIFIER="([^"]+)"><my:Obs AMT="([^"]+)" UNIT_MEASURE="([^"]+)"></my:Obs></my:Series>')) AS (val:chararray,amount_type:chararray,identifier:chararray,amt:chararray,unit_measure:chararray);
将正则表达式<my:Series VAL="([^"]+)" AMOUNT_TYPE="([^"]+)" IDENTIFIER="([^"]+)"><my:Obs AMT="([^"]+)" UNIT_MEASURE="([^"]+)"><\/my:Obs><\/my:Series>
放入Regexr会给出两个完美的匹配,但Pig只是不想使用它。它总是给我一个空的结果,而我期待以下:
A,FI,1,24.25,KG
B,GI,2,21.22,KG
更新1:这似乎很可能与此处提到的问题有关:Pig xmlloader error when loading tag with colon
答案 0 :(得分:0)
假设您的代码没有出错,我可以在这里考虑3个潜在的问题:
为了处理这种情况,我建议采取以下步骤:
如果您仍然遇到问题,请分享最后一个有效的解决方案,以及第一个无效的解决方案。 (包括输入!)