首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用HBaseStorage在Dataproc上通过Pig从Bigtable加载

使用HBaseStorage在Dataproc上通过Pig从Bigtable加载
EN

Stack Overflow用户
提问于 2017-03-21 15:57:20
回答 1查看 574关注 0票数 2

是否有人有使用HBaseStorage通过Pig从Bigtable加载数据的经验或成功?

这是一个非常简单的猪脚本,我正在尝试运行。它失败了,错误指示它找不到BigtableConnection类,我想知道我可能缺少什么设置来成功地从Bigtable加载数据。

代码语言:javascript
复制
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;

设置群集所遵循的步骤:

  1. 启动Bigtable集群(my_bt);创建并填充my_hbase_table
  2. 通过cloud.google.com Cloud控制台启动Dataproc集群(cloud.google.com)
  3. 在Dataproc主服务器上安装HBase外壳(/opt/hbase-1.2.1),遵循https://cloud.google.com/bigtable/docs/installing-hbase-shell上的说明
  4. hbase-site.xml和BigtableConnection类添加属性
  5. 创建具有上面列出的内容的文件t.pig
  6. 通过命令调用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
  7. 获得以下错误,指示未找到BigtableConnection类:

2017-03-21 15:30:48,029 org.apache.hadoop.hbase.mapreduce.TableInputFormat - java.io.IOException: java.lang.ClassNotFoundException: com.google.cloud.bigtable.hbase1_2.BigtableConnection

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-23 01:33:33

诀窍是获得所有依赖于猪的类路径。使用所罗门指出的jar,我创建了下面的初始化动作,它下载了两个jar,bigtable mapreduce jar和netty- Solomon boringssl,并设置了猪类路径。

代码语言:javascript
复制
#!/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
  • 在提交作业时指定属性: 属性=‘hbase.client.connection.impl=’PROPERTIES+='com.google.cloud.bigtable.hbase1_2.BigtableConnection‘PROPERTIES+=',google.bigtable.instance.id=MY_INSTANCE’属性+=‘,google.bigtable.project.id=MY_PROJECT’gcloud dataproc作业使用org.apache.pig.backend.hadoop.hbase.HBaseStorage('cf:*',提交猪-集群MY_DATAPROC_CLUSTER \-属性=“${PROPERTIES}”\ -e = LOAD 'hbase://MY_TABLE‘。'-loadKey true') AS (键:chararray,data);倾倒f;“
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42932185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档