仮想分散モードでHadoopをインストールしたとしたら、1台のサーバでのみ稼動していると言いますか?もしそうなら、それは決してDB2ほど高速になることはありません。 HadoopとHiveは、クラスタ上で動作し、スケーラブルに動作するように設計されています。クラスタ内で3台または4台のサーバを稼動させると、大規模なデータセットに比べて印象的なクエリ速度が見えることがわかります。
Cognos Query ServiceがJavaヒープのデフォルトメモリ容量(http://www-01.ibm.com/support/docview.wss?uid=swg21587457)を超えてアクセスできるようになっていることを確認します。現在、8Gbの初期サイズと最大12Gbを実行していますが、
次の問題は、CognosがHive SQLの仕様(または私が使用しているImpala)を知らないことです。これは、非基本的な問合せがselectからselectに変換されることを意味します。大きな欠落部分はwhere句になります。これは、CognosがHiveテーブルのすべてのデータを吸い上げて、それが所属するHiveに渡すのではなく、Cognosでフィルタリングを実行しようとしていることを意味します。 Cognosは、DB2 SQLとすべての仕様を記述して、そのワークロードを通過できるようにしています。
より複雑なクエリやプラットフォーム固有の関数などは一般的にHive(日付関数、解析関数など)に渡されないので、フィルタに必要なようにデータとクエリを構造化してみてください。
Hiveクエリログを使用して、Cognosが実行しているクエリを監視します。また、クエリにフィールドを追加し、そのフィールドをモデルからフィルタに直接送るのではなく、フィルタにドラッグするようなことを試してみてください。私はこれがCognosにwhere句にフィルタを含めるのを助けることができることを発見しました。
もう1つの選択肢は、Report StudioでパススルーSQLクエリを使用し、すべてをHiveのSQLに書き込むことです。私はちょうど500万行のファクトテーブルからトップ5のスタックを必要とする一連のダッシュボードに対してこれを行った。 5行の場合、Cognosは5百万行をすべて抽出してから、Cognos内でそれらをランク付けしていました。これを何度もやって、突然のコグノスのすべてが苦闘するだろう。パススルー問合せを使用すると、Impala Rank()関数を使用して5行しか取得できず、DB2が適切な(しかし小さな)クラスタで実行されているのを見るよりもはるかに高速で高速です。
ハイブのもう1つの考慮点は、Map Reduceでハイブを使用するか、TEZでハイブを使用するかです。同僚が見つけたことから、TEZ上のHiveは、Map Reduce上のHiveよりもCognosが実行するクエリのタイプがずっと高速です。
ハイブは、一般的にRDBMSよりも遅くなります。 Hiveで直接クエリをテストしましたか? – Andrew
レポートが非常に遅いために速度を上げる方法はありますか?単純なレポートでは2〜3分かかります –