将 XML 放入 HBase 的正确方法

Proper ways to Put XML into HBase

我正在尝试将一些 XML 本地存储的文件放入 HBase(版本 1。1.X)。

我的目标是使用 MapReduce(no reduce stage)将那些 XML 的内容作为字符串存储在我的 HBase Table 中而不加载它们到 HDFS。

这是我的 pseudo 代码:

fetchXMLs(path);
XML2OneLineFile();
configureHBase(); // + establishing connection
Map(input, output); //input: one XML file in one line; output : is the Put() of HBase;
closeConnection(); 

这种解决问题的方法是否正确,或者有更好的方法吗?

ps:我不想从我的 XML 中解析或提取数据,只是存储它们。

提前致谢

Hbase 并不是真正为大型对象存储而设计的。根据您 XML 的大小,HBase 可能不是您正在寻找的解决方案。

此刻,我正在处理一个由多种文件类型组成的数据库,其中包括 XML。我认为好的是将任何小于 1MB 的文件存储到 HBase,其余的存储到 Hadoop,在 SQL 或 HBase 中维护元数据。

这在很大程度上取决于您希望使用此数据实现的目标。

而不是将 XML 字符串存储到 Hbase,您可以将它们存储为 byte[] 您可以使用反序列化将其作为对象(序列化类型)检索回来。

您可以通过以下方式使用 Apache commons API。

例如:

byte[] xmlInBytes = org.apache.commons.lang.SerializationUtils.serialize(Serializable obj)

对于反序列化,你可以这样做

static Object deserialize(byte[] objectData) 

如果对象可能是 w3c 文档,则应将对象类型转换为 w3c 文档。

我已经用许多类型的对象进行了测试,而不仅仅是 XML。 它应该以相同的方式工作。希望这有帮助。