将 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。
它应该以相同的方式工作。希望这有帮助。
我正在尝试将一些 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。 它应该以相同的方式工作。希望这有帮助。