sqoop について

■--query オプション

Options Files で指定する場合、クォーテーションマークは要らない。例えば、

--query
SELECT * FROM hoge WHERE $CONDITIONS

でよい。
クォーテーションマークつけてもエラーにはならない。
クエリ前後のクォーテーションマークは無視される。
クエリ途中のクォーテーションマークは、クエリの一部として解釈される。
例えば、

--query
SELECT * FROM hoge WHERE hoge.a = 'fuga' AND $CONDITIONS

は字義通り実行される。
なお、コマンドラインで --query オプションを使う場合にクォーテーションをエスケープする方法は不明。

■Hiveにインポート

動的パーティションはサポートしていない?
--hive-partition-value を省略すると、デフォルトパーティションに投入される。

SequenceFile や RCFile への投入はサポートされていないらしい。おそらく裏で load コマンドを使っていて、load コマンドが単純にファイルをそのままHiveのデータファイルとして登録するだけのようなので、通常のテキストファイルを SequenceFile や RCFile のテーブルにLoadしようとしてもエラーになるものと思われる。

また、テーブルファイルの区切り文字はデフォルト(ハットA)でなければならない(sqoopがHDFSファイルを作成する際、ハットA区切りファイルを作成するので)。区切り文字が違うと、正常終了するが全てのカラムがNULLで入ってしまう。(CREATE TABLE の際、ROW FORMAT・・・を指定しなければよい。)