2

私はハイブクエリを含むプロジェクトに取り組んできました。

INSERT INTO OVERWRITE .... TRANSFORM(....)USING'python script.py' FROM .... LEFTOUTERJOIN。。。左外側の結合。。。左アウタージョイン

最初は、大量のダミーデータをロードするまで、すべてが正常に機能します。一部のフィールドに小さなバリエーションを加えて同じレコードを書き込むだけです。その後、これを再度実行すると、多くの情報なしでパイプの破損エラーが発生します。エラーに関するログはありません。IOException:パイプの破損エラーのみです。。。。

スクリプトを単純化し、エラーを分離するために、スクリプトを次のように変更します

for line in sys.stdin.readlines():
    print line

そのレベルでのエラーを回避するため。まだ同じエラーがあります。

4

2 に答える 2

1

この問題は、非常に多くの結合を異なるクエリに分割し、中間テーブルを使用することで解決されるようです。次に、以前のすべての結果を要約する最後の結合を含む最終クエリを追加するだけです。私が理解しているように、これはスクリプトレベルでエラーがないことを意味しますが、ハイブで処理するにはデータが多すぎます

于 2012-12-06T05:53:12.640 に答える
0

これに対する別の回避策は、変換を削除し、変換を実行したばかりの別のテーブルにデータを挿入する新しいクエリを生成することです。理由は 100% わかりませんが、scrtip は正しいです。この問題は、非常に多くの結合が原因でストリーミングされる非常に大量のデータである可能性があると思います。

于 2012-12-07T21:58:26.820 に答える