在 EMR 中,与 HBase 集成的 Pig 脚本在尝试加载数据时失败

Posted

技术标签:

【中文标题】在 EMR 中,与 HBase 集成的 Pig 脚本在尝试加载数据时失败【英文标题】:In EMR, Pig Script integrated with HBase failing while trying to load data 【发布时间】:2018-05-10 21:30:46 【问题描述】:

我正在执行一个与HBase 交互的pig 脚本,我收到以下错误:

原因:java.lang.RuntimeException:无法实例化 'org.apache.pig.backend.hadoop.hbase.HBaseStorage' 参数为 org.apache.pig.impl.PigContext.instantiateFuncFromSpec(PigContext.java:770) 在 org.apache.pig.parser.LogicalPlanBuilder.buildLoadOp(LogicalPlanBuilder.java:885) ... 38 更多原因:java.lang.reflect.InvocationTargetException 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 方法)在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) 在 org.apache.pig.impl.PigContext.instantiateFuncFromSpec(PigContext.java:738) ... 39 更多原因:java.lang.NoSuchMethodError: org.apache.hadoop.hbase.client.Scan.setCacheBlocks(Z)V 在 org.apache.pig.backend.hadoop.hbase.HBaseStorage.initScan(HBaseStorage.java:429) 在 org.apache.pig.backend.hadoop.hbase.HBaseStorage.(HBaseStorage.java:370) ... 44 更多

猪版本:猪 0.17.0

HBase 版本:HBase 1.3.1

【问题讨论】:

【参考方案1】:

库中有一个 Pig 0.16.0 版本的 JAR。所以有时,当我在 Oozie 中运行 Pig 脚本时,它会选择那个版本并连接到 HBase 1.x 版本,我认为这是导致上述失败的原因。

所以,我删除了旧的 JAR 文件,现在该脚本与 HBase 集成并在 Pig 0.17 版本中运行良好。

【讨论】:

以上是关于在 EMR 中,与 HBase 集成的 Pig 脚本在尝试加载数据时失败的主要内容,如果未能解决你的问题,请参考以下文章

在 Amazon EMR 中运行的 Pig 作业的引导文件的路径是啥

如何在 Amazon EMR 上的 pig 中使用 Python 流 UDF

带有 tez 的 aws emr 上的 Pig 脚本偶尔会因 OutOfMemoryException 而失败

在 EMR 上运行 Pig 脚本

amazon emr pig:使用参数文件

在 Amazon EMR-4 上的 Tez 上运行 Pig