2017-05-10 11 views
0

一部の列をインポート時にnullのプレースホルダに変換するにはどうすればよいでしょうか?インポート時に特定の列をNULL値にマッピングする

マップ列機能を使用できますか?

Argument Description 
--map-column-java <mapping> Override mapping from SQL to Java type for configured columns. 
--map-column-hive <mapping> Override mapping from SQL to Hive type for configured columns. 

私たちは、スキーマが同じになるようにしたいが、我々は彼らが私たちのクラスタに引き込まれたくないので、いくつかの列は、ちょうど膨張の多くを保持します。 もう一つの考えは、膨大な列がヌルであるが、それはsqoopのより多くの構成であり、マップする1000個のテーブルがあるカスタムのselect文を生成することです。

--map-column-java bloatedcolname=null 

考えられますか?

答えて

1

あなたは、例えば、この

あちこち--queryを使用することができます。

sqoop import --query 'select a, b, null as c, null as d from tbl where $CONDITIONS' 

$CONDITIONSは、分割のための最小値と最大値を置き換えるために使用されます。

0

あなたのハイブインポートクエリで単に--columns <col1, col2, col3…>を使用してください。

インポートしない列を除外します。


例:

私はRDBMSで4つの列を持っている - は、ID、名前、職業、住所、私は唯一のIDと名前をインポートしたいです。

インポートコマンドに--columns id, nameを使用してください。

+0

上記は機能しません。スキームは同一ではありません。ハイブでは列が並んでいないので、後続の処理に大きな苦痛を与えます。 – Chris

+0

@Chris sqoopを使用してハイブテーブルを作成しないでください。以前のコマンドを使用して作成した同じHiveテーブルを使用します。 –

+0

私はそれを試みましたが、それは左から右にそれを埋めます。最初の列を含めないと、値は間違った列になります! – Chris

関連する問題