上下文:
我在mysql中的表中有数据,xml作为一列。
对于Ex:Table应用程序有3个字段。
id(integer) , details(xml) , address(text)
(在实际情况下,我有10-12个字段)。
现在我们想使用pig查询整个表中包含mysql表中的所有字段。
使用带有
的sqoop将数据从mysql传输到hdfsrecord delimiter '\u0005' and column delimiter as "`" to /x.xml.
然后使用
将数据从x.xml加载到Pig中app = LOAD '/x.xml' USING PigStorage('\u0005') AS (id:int , details:chararray , address:chararray);
查询此类数据的最佳方式是什么。
我目前可以考虑的解决方案。
对于Ex:
A = LOAD 'xmls/hadoop_books.xml' using org.apache.pig.piggybank.storage.XMLLoader('BOOK') as (x:chararray);
存在的数据大小约为500 GB。
仅供参考我是hadoop ecosytem的新手,我可能会遗漏一些微不足道的东西。
答案 0 :(得分:1)
加载特定列:
使用xml列中的额外FOREACH生成特定数据的更好的工作方式,如:
B = FOREACH app GENERATE details;
并存储它以便能够使用XML加载器加载。 检查StreamingXMLLoader (你也可以检查Apache Drill它可以支持这种情况开箱即用)
或者使用UDF进行XML处理,并且只需移交相关的xml字段。