2016-06-22 5 views
0

NFLの再生結果のMySQLテーブルをSqoopを使用してHDFSにインポートしようとしています。SqoopインポートTINYINTをBOOLEANに変換する

sqoop import \ 
--connect jdbc:mysql://127.0.0.1:3306/nfl \ 
--username <username> -P \ 
--table play 

は残念ながら、インポート時にブール値に変換されているタイプTINYINTの列がある:私はこれを達成するために、次のコマンドを発行しました。たとえば、ゲームの四半期が発生した「四半期」の列があります。この列の値は、再生が第1四半期に発生した場合は「true」に、そうでない場合は「false」に変換されます。

実際、私はsqoop import-all-tablesを使って、私が持っているNFLデータベース全体をインポートしました。これは一様に動作します。

これを回避する方法、またはこれが起こらないようにするimportまたはimport-all-tablesの引数がありますか?

+0

各テーブル列のマッピングは、これに関係なくハイブの私の使用の起こっているマップ列ハイブ –

+0

を用いて別々に処理されなければなりません。上記のSqoopジョブを実行した後のHDFSホームディレクトリ内のファイルもこの現象を示します。 – user4601931

答えて

3

JDBC接続URLにtinyInt1isBit=falseを追加します。

jdbc:mysql://127.0.0.1:3306/nfl?tinyInt1isBit=false

別の解決策のようなものは、明示的にデータ型TINYINT(1)列の列のマッピングを上書きすることであろう。たとえば、列名がfooの場合、インポート時にSqoopに次のオプションを渡します。--map-column-hive foo=tinyint。 HDFSへの非ハイブインポートの場合は、--map-column-java foo=integerを使用してください。

Source

関連する問題