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

In EMR, Pig Script integrated with HBase failing while trying to load data

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

Caused by: java.lang.RuntimeException: could not instantiate 'org.apache.pig.backend.hadoop.hbase.HBaseStorage' with arguments at org.apache.pig.impl.PigContext.instantiateFuncFromSpec(PigContext.java:770) at org.apache.pig.parser.LogicalPlanBuilder.buildLoadOp(LogicalPlanBuilder.java:885) ... 38 more Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.apache.pig.impl.PigContext.instantiateFuncFromSpec(PigContext.java:738) ... 39 more Caused by: java.lang.NoSuchMethodError: org.apache.hadoop.hbase.client.Scan.setCacheBlocks(Z)V at org.apache.pig.backend.hadoop.hbase.HBaseStorage.initScan(HBaseStorage.java:429) at org.apache.pig.backend.hadoop.hbase.HBaseStorage.(HBaseStorage.java:370) ... 44 more

Pig 版本:Pig 0.17.0

HBase 版本:HBase 1.3.1

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

所以,我删除了旧的 JAR 文件,现在与 HBase 集成的脚本和 Pig 0.17 版本 运行 没问题。