hbase:批量加载(我的理解正确吗)

lmyy7pcs  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(367)

大容量加载通常使用map reduce在hdfs上创建一个文件,然后该文件与一个区域相关联。
如果是这样的话,我的客户可以创建这个文件(本地)并把它放到hdfs上吗。因为我们已经知道什么是键,什么值,所以我们可以在本地完成,而无需加载服务器。有人能举个例子吗,如何创建hfile(任何语言都可以)
当做

mm5n2pyu

mm5n2pyu1#

实际上,没有什么能阻止任何人“手工”准备hfile,但这样做会让你开始依赖hfile兼容性问题。根据这个(https://hbase.apache.org/book/arch.bulk.load.html)你只需要把你的文件放到hdfs('closer'到hbase)并调用 completebulkload .
建议策略:-检查 HFileOutputFormat2.java 来自hbase源的文件。它是标准的mapreduce输出格式。你真正需要的只是一系列的 KeyValue 元素(或 Cell 如果我们用术语或介面说话你需要自由 HFileOutputFormat2 来自mapreduce。为此检查其写入程序逻辑。你只需要这部分。-好的,你还需要建立有效的解决方案 Put -> KeyValue hfile的流处理。首先要看的是 TotalOrderPartitioner 以及 PutSortReducer .
如果您完成了所有步骤,那么您就有了可以执行put序列的解决方案(从任何数据生成它们都没有问题),因此您就有了本地hfile。看来这要花上一周时间才能让它运转起来。
我不这样做是因为有了好的输入格式和数据转换Map器(我很久以前就有了),我现在可以使用标准格式了 TotalOrderPartitioner 以及 HFileOutputFormat2 在mapreduce框架中,所有的东西都只需要使用完整的集群功能就可以工作。对5分钟内加载的10g sql转储感到困惑吗?不是我。你不能用一台服务器来打败这样的速度。
好的,这个解决方案需要仔细设计sql请求,以便sql db从中执行etl过程。但现在这是日常程序。

相关问题