如何查询以 xml 作为一列的 hdfs 中的文件
How to query file in hdfs which has xml as one column
上下文:
我在 mysql 中的 table 中有数据,其中 xml 作为一列。
例如:Table 应用程序有 3 个字段。
id(integer) , details(xml) , address(text)
(在实际情况下,我这里有 10-12 个字段)。
现在我们想使用 pig.
查询整个 table 中的所有字段 mysql table
使用带有
的 sqoop 将数据从 mysql 传输到 hdfs
record 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);
查询此类数据的最佳方式是什么。
我目前能想到的解决方案。
- 使用自定义加载器并扩展 Loadfunc 来读取数据。
- 如果有某种方法可以使用 xmlpathloader 加载特定列并正常加载。请建议是否可以这样做。
正如我看到的所有使用 xpath 的示例在加载文件时都使用 XML 加载程序。
例如:
A = LOAD 'xmls/hadoop_books.xml' using org.apache.pig.piggybank.storage.XMLLoader('BOOK') as (x:chararray);
- 使用 pig 查询此类数据是否好用,请建议是否有任何其他替代技术可以有效地做到这一点。
目前的数据大小约为 500 GB。
仅供参考,我是 hadoop 生态系统的新手,我可能遗漏了一些微不足道的东西。
加载特定列:
- 其他一些 Whosebug 答案建议使用 awk 预处理数据(生成一个新输入仅包含 xml 部分。)
一种更好的解决方法,可以通过 xml 列中的额外 FOREACH 生成特定数据,例如:
B = FOREACH 应用生成详细信息;
并存储它以便能够使用 XML 加载器加载。
检查 StreamingXMLLoader
(您也可以查看 Apache Drill,它可能开箱即用地支持这种情况)
或者使用 UDF 进行 XML 处理,在 pig 中你只需交出相关的 xml 字段。
上下文:
我在 mysql 中的 table 中有数据,其中 xml 作为一列。
例如:Table 应用程序有 3 个字段。
id(integer) , details(xml) , address(text)
(在实际情况下,我这里有 10-12 个字段)。
现在我们想使用 pig.
使用带有
的 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);
查询此类数据的最佳方式是什么。
我目前能想到的解决方案。
- 使用自定义加载器并扩展 Loadfunc 来读取数据。
- 如果有某种方法可以使用 xmlpathloader 加载特定列并正常加载。请建议是否可以这样做。 正如我看到的所有使用 xpath 的示例在加载文件时都使用 XML 加载程序。
例如:
A = LOAD 'xmls/hadoop_books.xml' using org.apache.pig.piggybank.storage.XMLLoader('BOOK') as (x:chararray);
- 使用 pig 查询此类数据是否好用,请建议是否有任何其他替代技术可以有效地做到这一点。
目前的数据大小约为 500 GB。
仅供参考,我是 hadoop 生态系统的新手,我可能遗漏了一些微不足道的东西。
加载特定列:
- 其他一些 Whosebug 答案建议使用 awk 预处理数据(生成一个新输入仅包含 xml 部分。)
一种更好的解决方法,可以通过 xml 列中的额外 FOREACH 生成特定数据,例如:
B = FOREACH 应用生成详细信息;
并存储它以便能够使用 XML 加载器加载。 检查 StreamingXMLLoader (您也可以查看 Apache Drill,它可能开箱即用地支持这种情况)
或者使用 UDF 进行 XML 处理,在 pig 中你只需交出相关的 xml 字段。