7

MSSQLServerからHiveに約10個のテーブルをインポートしました。しかし、テーブルの1つでHiveのレコードをクロスチェックしようとすると、クエリを実行したときにさらに多くのレコードが見つかりました(tblName;からcount(*)を選択してください)。

次に、そのテーブルを削除して、Hiveに再度インポートしました。コンソールログで次のことを確認しました(203レコードを取得)。次に、(tblNameからcount(*)を選択;)を再試行し、カウントを298として取得しました。

私はこれがなぜ起こるのか理解していません。クエリに問題があるか、sqoop-importのコマンドが正しくないために発生します。

他のすべてのテーブルレコードは問題ありません。

plsはこれから私を助けます。

4

1 に答える 1

8

この問題の解決策をメーリング リストから入手したので、共有したいと思います。彼らの返事は次のとおりでした。

過去に同様の問題が発生していました。ハイブのテーブルには、sqoop によってインポートされたと報告され、実際にデータベースで使用できるよりも多くの行があるようです。

私たちの側で説明した問題は、エクスポートされたテスト CSV ファイルで改行が発生した、エクスポートされたデータの文字が正しくないことでした。たとえば、一部の行には改行文字を含むデータが含まれていました。エクスポートされたいくつかの行が複数の行に分割されたため、ハイブ行の数がインポート数よりも多いように見えました。同様の問題が発生している可能性があります。パラメータを使用して問題を解決しました--hive-drop-import-delims(または、 を使用することもできます--hive-delims-replacement)。セマンティクスと使用法については、マニュアルを参照してください。

http://incubator.apache.org/sqoop/docs/1.4.0-incubating/SqoopUserGuide.html#id1765770

ありがとう

于 2012-02-09T06:33:20.217 に答える