gpt4 book ai didi

hadoop - 使用 HBase 表作为 MapReduce 源

转载 作者:可可西里 更新时间:2023-11-01 16:56:05 26 4
gpt4 key购买 nike

据我所知,当使用 hbase 表作为 mapreduce 作业的源时,我们已经定义了扫描的值。假设我们将其设置为 500,这是否意味着每个映射器仅从 hbase 表中获得 500 行?如果我们将它设置为非常高的值会有什么问题吗?

如果扫描大小很小,我们不会遇到与 mapreduce 中的小文件相同的问题吗?

最佳答案

这是来自 HBase Book 的示例代码关于如何运行从 HBase 表读取的 MapReduce 作业。

Configuration config = HBaseConfiguration.create();
Job job = new Job(config, "ExampleRead");
job.setJarByClass(MyReadJob.class); // class that contains mapper

Scan scan = new Scan();
scan.setCaching(500); // 1 is the default in Scan, which will be bad for MapReduce jobs
scan.setCacheBlocks(false); // don't set to true for MR jobs
// set other scan attrs
...

TableMapReduceUtil.initTableMapperJob(
tableName, // input HBase table name
scan, // Scan instance to control CF and attribute selection
MyMapper.class, // mapper
null, // mapper output key
null, // mapper output value
job);
job.setOutputFormatClass(NullOutputFormat.class); // because we aren't emitting anything from mapper

boolean b = job.waitForCompletion(true);
if (!b) {
throw new IOException("error with job!");
}

当您说“扫描的值(value)”时,那不是真的。您的意思是 scan.setCaching()scan.setBatch()scan.setMaxResultSize()

  1. setCaching 用于告诉服务器在将结果返回给客户端之前要加载多少行
  2. setBatch 用于在您有一个非常宽的表时限制每次调用中返回的列数
  3. setMaxResultSize用于限制返回给客户端的结果数

通常您不会在 MapReduce 作业中设置 MaxResultSize。因此,您将看到所有数据。

以上信息引用为here .

关于hadoop - 使用 HBase 表作为 MapReduce 源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29856355/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com