使用hbastorage通过dataproc上的pig从bigtable加载

ruoxqz4g  于 2021-06-21  发布在  Pig
关注(0)|答案(1)|浏览(439)

有没有人有经验或成功地使用hbastorage通过pig on dataproc从bigtable加载数据?
这里有一个非常简单的Pig脚本,我正在尝试运行。它失败了,错误表明它找不到bigtableconnection类,我想知道我可能缺少什么设置来成功地从bigtable加载数据。

raw = LOAD 'hbase://my_hbase_table'
       USING org.apache.pig.backend.hadoop.hbase.HBaseStorage(
       'cf:*', '-minTimestamp 1490104800000 -maxTimestamp 1490105100000 -loadKey true -limit 5')
       AS (key:chararray, data);

DUMP raw;

设置群集所遵循的步骤:
启动bigtable集群(myu-bt);创建并填充了我的\u hbase \u表
通过cloud.google.com cloud dataproc控制台启动了dataproc群集(my\ U dp)
在dataproc主机(/opt/hbase-1.2.1)上安装了hbase shellhttps://cloud.google.com/bigtable/docs/installing-hbase-shell
已将属性添加到 hbase-site.xml 对于我的\u bt和bigtableconnection类
已创建文件 t.pig 上面列出的内容
通过命令调用pig: gcloud beta dataproc jobs submit pig --cluster my_dp --file t.pig --jars /opt/hbase-1.2.1/lib/bigtable/bigtable-hbase-1.2-0.9.5.1.jar 出现以下错误,指示未找到bigtableconnection类:
2017-03-21 15:30:48029[作业控制]错误org.apache.hadoop.hbase.mapreduce.tableinputformat-java.io.ioexception:java.lang.classnotfoundexception:com.google.cloud.bigtable.hbase1_2.bigtableconnection

qzwqbdag

qzwqbdag1#

诀窍是获得对pig类路径的所有依赖。使用solomon指出的jar,我创建了以下初始化操作,它下载两个jar,bigtable mapreduce jar和netty tcnative boringssl,并设置pig类路径。


# !/bin/bash

# Initialization action to set up pig for use with cloud bigtable

mkdir -p /opt/pig/lib/

curl http://repo1.maven.org/maven2/io/netty/netty-tcnative-boringssl-static/1.1.33.Fork19/netty-tcnative-boringssl-static-1.1.33.Fork19.jar \
    -f -o /opt/pig/lib/netty-tcnative-boringssl-static-1.1.33.Fork19.jar

curl http://repo1.maven.org/maven2/com/google/cloud/bigtable/bigtable-hbase-mapreduce/0.9.5.1/bigtable-hbase-mapreduce-0.9.5.1-shaded.jar \
    -f -o /opt/pig/lib/bigtable-hbase-mapreduce-0.9.5.1-shaded.jar

cat >>/etc/pig/conf/pig-env.sh <<EOF

# !/bin/bash

for f in /opt/pig/lib/*.jar; do
  if [ -z "\${PIG_CLASSPATH}" ]; then
    export PIG_CLASSPATH="\${f}"
  else
    export PIG_CLASSPATH="\${PIG_CLASSPATH}:\${f}"
  fi  
done
EOF

然后,您可以按照通常的方式传入bigtable配置:
通过hbase-site.xml
提交作业时指定属性:

PROPERTIES='hbase.client.connection.impl='
PROPERTIES+='com.google.cloud.bigtable.hbase1_2.BigtableConnection'
PROPERTIES+=',google.bigtable.instance.id=MY_INSTANCE'
PROPERTIES+=',google.bigtable.project.id=MY_PROJECT'

gcloud dataproc jobs submit pig --cluster MY_DATAPROC_CLUSTER \
    --properties="${PROPERTIES}"  \
    -e "f =  LOAD 'hbase://MY_TABLE' 
         USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('cf:*','-loadKey true') 
         AS (key:chararray, data); 
    DUMP f;"

相关问题