Dataprocのsqoopでavro保存しようとしたらハマって困った
この記事について
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つのオプションを付与したところ成功した。
-
-Dmapreduce.job.classloader=true
"-Dmapreduce.job.user.classpath.first=true" をつけろ!という記事はたくさんあるが、それだと以下のエラーが出て上手くいかなかった。Error: org.apache.avro.reflect.ReflectData.addLogicalTypeConversion(Lorg/apache/avro/Conversion;)
-map-column-java Clobカラム=String
Clobタイプのカラムはこれを指定しないと怒られた。
参考
Author And Source
この問題について(Dataprocのsqoopでavro保存しようとしたらハマって困った), 我々は、より多くの情報をここで見つけました https://qiita.com/d_desuyon/items/22658106dfd409a20503著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .