LoginSignup
0
0

More than 3 years have passed since last update.

Dataprocのsqoopでavro保存しようとしたらハマって困った

Last updated at Posted at 2019-05-30

この記事について

Dataproc で sqoop を実行し、oracleからデータを引っこ抜こうとしたらエラーが出た。
そのトラブルシューティングの記録。

環境

  • Dataprocイメージ: 1.3.16-deb9
  • sqoopパッケージ: sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
  • 連携テーブルにClobタイプのカラムあり
  • ファイルは avro 形式で保存したい

Dataprocでのsqoop方法

この記事を読めば大体書いてある。
https://medium.com/google-cloud/moving-data-with-apache-sqoop-in-google-cloud-dataproc-4056b8fa2600

記事はMysqlだが、これをOracleでやる場合は以下の違いがある。

  • --jars に上記sqoopパッケージを解凍して得たsqoop-1.4.7.jar と lib 配下の全ての jar を指定する
  • --conect 部分をoracleドライバに変更する

しかし、タイトルの通りこれでは avro 形式での sqoop に失敗する。

解決方法

以下の2つのオプションを付与したところ成功した。

  1. -Dmapreduce.job.classloader=true
    "-Dmapreduce.job.user.classpath.first=true" をつけろ!という記事はたくさんあるが、それだと以下のエラーが出て上手くいかなかった。

    Error: org.apache.avro.reflect.ReflectData.addLogicalTypeConversion(Lorg/apache/avro/Conversion;)
    
  2. -map-column-java Clobカラム=String
    Clobタイプのカラムはこれを指定しないと怒られた。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0