2017-11-13 8 views
1

ソースシステムデータウェアハウスからHDFSに変換しようとする非常に大きなテーブルがありますが、そのためには帯域幅が限られています。私は必要な列だけを引き出し、テーブルを起動するための実行時間を最小限に抑えたいと思います。ジョインを含むテーブルで増分Sqoopを実行しますか?

sqoopは現在、このような何かを引っ張る:

SELECT 
    ColumnA, 
    ColumnB, 
    .... 
    ColumnN 
FROM 
    TABLE_A 
LEFT JOIN 
    TABLE_B 
ON 
    ... 
LEFT JOIN 
    TABLE_N 
.... 

は、データがスター・スキーマ形式で保存され、かつ寸法が独立して、事実の更新ができることを考えると、インクリメンタルsqoopを行うことが可能です?

または、テーブル全体を必要なだけ増分し、HDFS側で結合を実行する唯一のソリューションですか?

答えて

1

増分インポートでは、--incrementalフラグを使用する必要があります。詳細は下のリンクを参照してください: -

https://sqoop.apache.org/docs/1.4.2/SqoopUserGuide.html#_incremental_imports

はあなたが増分ロード-check-カラムは、増分sqoopingと-lastのために使用する列を指定したいsqoopを伝えるために-incremental指定する必要があります次の読み込みを開始する値からどのくらいの値を指定するかを指定します。 これは写真の半分です。これを行うにはさらに多くの方法があります。 -queryオプションを使用することができます。クエリは、Select> from table where column> 123のようになります。これは基本的に同じことです。選択した列の最終/最大値を記録し、次のインポートに使用する必要があります。

+1

私の場合、おそらくlastmodifiedモードを使用する必要がありますか? KEYを使用することは間違いありません。私はそこにソーステーブルをチェックアウトします。しかし、最後の変更のために複数のフィールドを使用する方法はありますか? – boethius

+1

さて、クール。私はこれが私を得るために十分だと思う - 私は多くのユーザーが - 増分sqoopで問題を抱えているのを見るが、少なくとも始めることができる。将来の問題がある場合は、別の質問をします。 – boethius

関連する問題