私は2台のサーバーを持っています。最初のサーバー(A)には、飼い猫、mongodbデータベース、ドリルビットが含まれています。 2番目のサーバ(B)には、複数のハイブテーブル、postgresqlデータベース、およびもう1つのドリルビットを持つhadoopディストリビューションが含まれています。どちらのドリルビットも、サーバAの飼育係に接続されているので、ドリルホームページで互いに見ることができます。以下のようなクエリを実行すると(ビューdfs.lineorderはサーバBのハイブとポストグルBは監督になり、すべてを実行します。 mongodbテーブルを扱うパーツをサーバーAのドリルビットに委任しないので、クエリを実行するのに要する時間の約90%(約30分)がサーバーAからサーバーBにmongodbコレクションを送信するのに費やされます。 drillbit Bにクエリのmongodb部分をドリルビットBに委任させる方法、またはこれが誤った設定の問題である可能性がありますか? また、ドリルビットを異なるデータベースにアクセスできるように設定できます(たとえば、各ドリルビットが異なるサブネットにアクセスすると、すべてのドリルビットが同じデータベースにアクセスできるわけではありません)。 dfs.tmp.lineorderからの収入 、dfs.tmp AS( SELECT SUM(lo_extendedprice * lo_discount)からの収入 AS SELECT SUM(売上高)date
lo_orderdate = d_datekey AND d_year =:Apacheドリルデータベースとデータローカリティ
サンプルクエリ。 1 BETWEEN ssb.orderdate.d_year = 1993 とlo_discount SSB mongo.test.ssb_europeからの収入 AS 1993 と1と3 とlo_quantity UNION BETWEEN lo_discount ALL SELECT SUM(lo_extendedprice * lo_discount)AND 3 AND lo_quantity );
設定(ドリルoverride.conf):
drillbit A(Windows Server 2008の)上: drill.exec:{ クラスタID: "drillbits1"、 zk.connect:「サーバA:2181 」 偽装:{ が有効:真、 max_chained_user_hops:3 }}
drillbit B上(ClouderaのCDH 5.8.0): drill.exec:{ クラスタID: "drillbits1"、 zk.connect: "サーバA:2181"、 偽装:{ 有効:真、 max_chained_user_hops:3 }}