PIG 中是不是有 HBaseStorage 的替代方案

Posted

技术标签:

【中文标题】PIG 中是不是有 HBaseStorage 的替代方案【英文标题】:Is there an Alternative for HBaseStorage in PIGPIG 中是否有 HBaseStorage 的替代方案 【发布时间】:2013-11-21 11:20:34 【问题描述】:

我在 pig 脚本中使用带有 -caching 选项的 HBaseStorage,如下所示

HBaseStorage('countDetails:ansCount countDetails:divCount countDetails:unansCount countDetails:engCount countDetails:ineffCount countDetails:totalCount', '-caching 1000');

我可以看到这反映在我的 job.xml 中 但我可以看到它没有时差我正在处理 1000 万条记录并将大约 160mb 的数据存储到 HBase。 当我将结果存储在 hdfs 中时,它需要 3 分钟来处理相同的作业需要 30 分钟才能存储到 HBase。

我什至尝试过设置

SET hbase.client.scanner.caching 1000;

请告诉我如何减少时间。 HBaseStorage 有什么替代方案吗? http://apmblog.compuware.com/2013/02/19/speeding-up-a-pighbase-mapreduce-job-by-a-factor-of-15/

上面的博客说我必须在引导脚本中设置 hbase.client.scanner.caching 我不知道该怎么做 如果我在 Hbase-conf 中设置它就足够了吗? 请帮我解决这个问题

【问题讨论】:

如果您不使用 EMR,请尝试将 hbase.client.scanner.caching 属性添加到 hbase-site.xml。然后重新启动集群(Hadoop 和 HBase),否则请查看亚马逊关于引导操作的文档:docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/… 我试过了,但是没有用。我正在将 CDH4.4 与 cloudera manager 4.7 一起使用,我在 hbase 主服务器中设置了该道具并重新启动它。 【参考方案1】:

hbase.client.scanner.caching 指向在扫描仪上调用 next 时如果不是从(本地,客户端)内存中获取的行数。

较高的缓存值将启用更快的扫描程序,但会占用更多内存,并且当缓存为空时,某些 next 调用可能需要越来越长的时间。不要设置此值,以使调用之间的时间大于扫描器超时时间; 即hbase.regionserver.lease.period 此属性默认为 1 分钟。客户必须 在此期间内报告,否则他们将被视为死亡。

【讨论】:

【参考方案2】:

根据我的经验,HBase 在 Pig 上的表现不是很好。如果您不需要随机查找,则仅使用 HDFS,否则 HBase MR 作业将是更好的选择。此外,在 Hadoop MR 作业中,您可以连接到 Hbase(这个选项给了我最好的性能)。

【讨论】:

以上是关于PIG 中是不是有 HBaseStorage 的替代方案的主要内容,如果未能解决你的问题,请参考以下文章

PIG - HBASE - 铸造值

运行 Apache Pig 脚本时如何查找 jar 依赖项?

pig 将Hbase中表导出为CSV出现错误 高分!!! 求解!!!

pig udf 中是不是有类似 setup 的功能

Java & Pig - 是不是可以将 pig 脚本的输出转换为 Java 变量?

如何在 Apache Pig 中查找包含大量单词的列是不是具有真实的电子邮件 ID?