我们使用hbase批量加载技术,如中所述:http://blog.cloudera.com/blog/2013/09/how-to-use-hbase-bulk-loading-and-why/ (即:直接使用hfileoutputformat创建hfiles)
我们必须使用此选项来用遗留系统中已有的所有数据预填充hbase集群。
由于hbase不支持辅助表(或索引),我们在应用程序级别维护辅助表(或索引)。
现在的问题是如何使用批量加载技术来创建不同表(主表和辅助表/索引)的hfiles。是否有多个hfileoutputformat(如hfilemultioutputformat)?
我知道我们可以创建多个mr作业并分别运行每个作业。成本来自“读取”如此多的数据(超过几tb)。我想找到一种既能读一次又能写多次的方法。链接mr jobs没有帮助,因为所有map任务都需要相同的数据,并且链接限制第二个map任务获得第一个map任务的输出。
类似的问题也在这里,这里。但他们没有回答,因此再次尝试。
1条答案
按热度按时间x8diyxa71#
首先是非常有效的要求。
实现的第一步是遍历并理解hfileoutputformat的代码:hfileoutputformat
您感兴趣的部分是它使用列族创建的目录结构。您将需要创建一个具有table-->column family-->hfile的目录结构
可以使用多个输出来写入差异表数据。