データセットを1回だけスキャンするために、複数のINSERT OVERWRITEを複数のテーブルに使用してクエリを実行していますが、これらすべてのテーブルが同じコンテンツになります! 結果を返す GROUP BY クエリがすべての一時テーブルを上書きしているようです。
これは不正なクエリです。
FROM nikon
INSERT OVERWRITE TABLE e1
SELECT qs_cs_s_aid AS Emplacements, COUNT(*) AS Impressions
WHERE qs_cs_s_cat='PRINT' GROUP BY qs_cs_s_aid
INSERT OVERWRITE TABLE e2
SELECT qs_cs_s_aid AS Emplacements, COUNT(*) AS Vues
WHERE qs_cs_s_cat='VIEW' GROUP BY qs_cs_s_aid
;
MR ジョブを 1 つだけ起動します。結果は次のとおりです。テーブル 'e1' にテーブル 'e2' からの結果が含まれているのはなぜですか?! テーブル 'e1' は空である必要があります (以下の個々の SELECT を参照してください)。
hive> SELECT * from e1;
OK
NULL 2
1627575 25
1627576 70
1690950 22
1690952 42
1696705 199
1696706 66
1696730 229
1696759 85
1696893 218
Time taken: 0.229 seconds
hive> SELECT * from e2;
OK
NULL 2
1627575 25
1627576 70
1690950 22
1690952 42
1696705 199
1696706 66
1696730 229
1696759 85
1696893 218
Time taken: 0.11 seconds
個々のクエリの結果は次のとおりです (2 番目のクエリのみが結果セットを返します)。
hive> SELECT qs_cs_s_aid AS Emplacements, COUNT(*) AS Impressions FROM nikon
WHERE qs_cs_s_cat='PRINT' GROUP BY qs_cs_s_aid;
(...)
OK
<- There are no results, this is normal
Time taken: 41.471 seconds
hive> SELECT qs_cs_s_aid AS Emplacements, COUNT(*) AS Vues FROM nikon
WHERE qs_cs_s_cat='VIEW' GROUP BY qs_cs_s_aid;
(...)
OK
NULL 2
1627575 25
1627576 70
1690950 22
1690952 42
1696705 199
1696706 66
1696730 229
1696759 85
1696893 218
Time taken: 39.607 seconds