2

誰かがHBaseStorageを使ってBigtableのデータをPapでデータにロードすることに経験があるか、成功しましたか?HBaseStorageを使用してBigtableからDataprocの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; 

ステップ:

  1. 発足Bigtableのクラスタ(my_btを)。 https://cloud.google.com/bigtable/docs/installing-hbase-shell
  2. 追加されたプロパティのDataprocマスター(/opt/hbase-1.2.1)以下の手順で作成され、人口my_hbase_table
  3. 進水Dataprocクラスター(my_dp)をcloud.google.comクラウドDataprocコンソール経由
  4. インストール済みのHBaseシェルhbase-site.xmlにmy_btとBigtableConnectionクラスのコマンドを介して
  5. 呼び出さブタ上記内容
  6. 作成されたファイルt.piggcloud 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. はBigtableConnectiを示す次のエラーが発生しましたクラスで見つかりません:

2017年3月21日15:30:48029 [JobControl] ERRORのorg.apache.hadoop.hbase.mapreduce.TableInputFormat - にjava.io.IOException:java.lang.ClassNotFoundExceptionが:COM .google.cloud.bigtable.hbase1_2.BigtableConnection

+0

私はすべての依存関係を持つ影付きのbigtable mapreduce jarを使用することを提案しますあなたが必要です。 http://search.maven.org/#search%7Cga%7C1%7Cbigtable%20mapreduceに移動し、「shaded.jar」をダウンロードします。 –

+0

'のように見え、'と 'は@SolomonDuskisのURLに自動的に追加されました。アーティファクトをダウンロードするにはhttp://search.maven.org/#search%7Cga%7C1%7Cbigtable%20mapreduceにアクセスします。 –

+0

私はshaded.jarをダウンロードし、豚の仕事を提出するときに同じエラーを受け取ります。テストを実行するときに得られる出力をアップロードできます。 – EduBoom

答えて

3

このトリックは、すべての依存関係をブタのクラスパスに追加しています。 Solomonが指し示すjarファイルを使って、私は2つのjar、bigtable mapreduce jarとnetty-tcnative-boringsslをダウンロードし、ブタのクラスパスを設定する次のinitialization actionを作成しました。

#!/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の構成で渡すことができます

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;" 
:HBaseの-site.xmlの経由

  • ジョブをサブミットする際のプロパティの指定
+0

ありがとうございました。私はそれを試してみましょう:) – EduBoom

+0

pig-env.shの追加がトリックでした。 しかし、HBaseStorageには、BigTableクライアントAPIではサポートされていないオプションがあります。 最小/最大タイムスタンプオプションで結果が得られませんでしたが、-gteで結果が得られました。 seams -ltはサポートされていません。 HBaseStorageは-gteと-ltを実装するためにRowFilterを使用しますが、BigTableのRowFilterの実装はそれをサポートしていません。 実際にPigジョブで使用するのは、Scanオブジェクトを作成してsetStartRow()とsetStopRow()を実行するカスタムローダーです。 BigTableでサポートされているかどうかはわかりません。私は実験する必要があります。 ご協力いただきありがとうございます。 エドゥアルド。 – EduBoom

+0

setStartRow()とsetStopRow()は実際にサポートされています。 RowFilterに関するhttps://github.com/GoogleCloudPlatform/cloud-bigtable-clientの問題について、Cloud Bigtableクライアントライブラリのgithub問題を解決してください。 –

関連する問題