Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将XML放入HBase的正确方法_Xml_Hadoop_Mapreduce_Hdfs_Hbase - Fatal编程技术网

将XML放入HBase的正确方法

将XML放入HBase的正确方法,xml,hadoop,mapreduce,hdfs,hbase,Xml,Hadoop,Mapreduce,Hdfs,Hbase,我试图将一些本地存储的XML文件放入HBase(1.1.X版) 我的目标是使用MapReduce(no reduce stage)将HBase表中这些XML的内容存储为字符串,而不将它们加载到HDFS 这是我的伪代码: fetchXMLs(path); XML2OneLineFile(); configureHBase(); // + establishing connection Map(input, output); //input: one XML file in one line; ou

我试图将一些本地存储的XML文件放入HBase(1.1.X版)

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

这是我的伪代码:

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中维护元数据


这在很大程度上取决于您想用这些数据实现什么。

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

目前,我正在开发一个包含多种文件类型(包括XML)的数据库。我认为最好的做法是将1MB以下的文件存储到HBase,其余的存储到Hadoop,在SQL或HBase中维护元数据


这在很大程度上取决于您想用这些数据实现什么。

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

您可以使用ApacheCommonsAPI以下面的方式实现这一点

例如:

byte[] xmlInBytes = org.apache.commons.lang.SerializationUtils.serialize(Serializable obj)
对于反序列化,您可以这样做

static Object deserialize(byte[] objectData) 
若对象可能是w3c文档,则应将对象类型转换为w3c文档

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

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

您可以使用ApacheCommonsAPI以下面的方式实现这一点

例如:

byte[] xmlInBytes = org.apache.commons.lang.SerializationUtils.serialize(Serializable obj)
对于反序列化,您可以这样做

static Object deserialize(byte[] objectData) 
若对象可能是w3c文档,则应将对象类型转换为w3c文档

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

事实上,我的XML一点也不大,但数量众多;换句话说,我必须在短时间内存储大量小尺寸XML(大约90.000个文件,从80KB到500KB不等)。然后Hbase应该可以了,如果不需要扫描这些文件的内容,只需将内容转储到列属性中就可以了。但是,它会减慢扫描速度(因为它必须扫描每个文件的所有内容)。您需要如何访问数据?数据将由指向我的Hbase表中特定(很少是所有)记录的目标GET访问。那么,不将文件加载到HDFS的想法仍然正确吗?是的,我想是的。我还没有用它做过广泛的测试,所以我无法判断这样做是否会降低很多性能。但是,如果你只得到它,这样应该没问题;换句话说,我必须在短时间内存储大量小尺寸XML(大约90.000个文件,从80KB到500KB不等)。然后Hbase应该可以了,如果不需要扫描这些文件的内容,只需将内容转储到列属性中就可以了。但是,它会减慢扫描速度(因为它必须扫描每个文件的所有内容)。您需要如何访问数据?数据将由指向我的Hbase表中特定(很少是所有)记录的目标GET访问。那么,不将文件加载到HDFS的想法仍然正确吗?是的,我想是的。我还没有用它做过广泛的测试,所以我无法判断这样做是否会降低很多性能。但如果你只得到它应该是好的方式。