0

毎日データが追加されるハイブ テーブルがあります。そのため、毎日約 5 つのファイルが追加されます。これで、このテーブルの下に 800 個のパーツ ファイルができました。

マッパーはファイルの数に比例するため、私が抱えている問題は、このテーブルに参加または使用することで、800 のマッパーをトリガーすることです。

しかし、実行中のジョブにはテーブル全体を使用する必要があります。

テーブル全体を使用する方法はありますが、あまりにも多くのマッパーをトリガーしませんか?

ファイルは以下のようになります

-rw-rw-r--   3 XXXX hdfs     106610 2015-12-15 05:39   /apps/hive/warehouse/prod.db/TABLE1/000000_0_copy_1.deflate
-rw-rw-r--   3 XXXX hdfs     106602 2015-12-23 12:31 /apps/hive/warehouse/prod.db/TABLE1/000000_0_copy_10.deflate
-rw-rw-r--   3 XXXX hdfs     157686 2016-03-06 05:20 /apps/hive/warehouse/prod.db/TABLE1/000000_0_copy_100.deflate
-rw-rw-r--   3 XXXX hdfs     163580 2016-03-07 05:22 /apps/hive/warehouse/prod.db/TABLE1/000000_0_copy_101.deflate
4

1 に答える 1

0

データがパーティションディレクトリに格納され、クエリが実行されるたびにパーティションの下のファイルのみがアクセスされ、そのパーティション列が使用されたときにハイブクエリでトリガーされるマッパーがアクセスされるように、テーブルをパーティション分割することをお勧めします。

他のオプションは、CLUSTER BY 句を使用してテーブルをバケット化し、データを固定番号に分散することです。バケット化されたディレクトリの数を減らし、数を減らします。クエリ中にアクセスされるディレクトリとファイルの。

于 2016-04-15T06:00:49.113 に答える