私はHiveを使用してJaspersoft iReportを使用していくつかのレポートを実行しようとしていますが、Hiveクエリのレデューサーの数を設定しようとした場合を除いて正常に動作します。この質問は、Hive JDBCを使って減速機の数を設定する一般的なケースに当てはまるかもしれないと思います。Jaspersoft iReport - Hiveクエリのレデューサーの数を設定する方法は?
どうすればいいですか?
私はHiveを使用してJaspersoft iReportを使用していくつかのレポートを実行しようとしていますが、Hiveクエリのレデューサーの数を設定しようとした場合を除いて正常に動作します。この質問は、Hive JDBCを使って減速機の数を設定する一般的なケースに当てはまるかもしれないと思います。Jaspersoft iReport - Hiveクエリのレデューサーの数を設定する方法は?
どうすればいいですか?
2つのSQL文(またはHiveQL文)をレポートクエリに入れることはできません。
set mapred.running.reduce.limit = 25;
SELECT name, phone_office, billing_address_city, billing_address_street, billing_address_country FROM accounts;
通常、私は、JDBC接続には、このようにプロパティを置くと思うだろう:これは、このようなクエリ文字列を使用することはできません。しかし、私が知る限り、ハイブはこれをサポートしていません。しかし、私はあなたがメインのクエリとして "セット" HiveQLステートメントを置くことでこれを回避できると思います。次に、 "選択"クエリをサブデータセットとして配置します。この考えをテストしたレポートの抜粋です:
<subDataset name="Accounts">
<queryString language="HiveQL">
<![CDATA[SELECT name, phone_office, billing_address_city, billing_address_street, billing_address_country FROM accounts]]>
</queryString>
<field name="name" class="java.lang.String"/>
<field name="phone_office" class="java.lang.String"/>
<field name="billing_address_city" class="java.lang.String"/>
<field name="billing_address_street" class="java.lang.String"/>
<field name="billing_address_country" class="java.lang.String"/>
</subDataset>
<queryString language="HiveQL">
<![CDATA[set mapred.running.reduce.limit = 25]]>
</queryString>
私は報告書がこのように機能することを確認します。私のサブデータセットは、あなたが期待するようにTableコンポーネントを埋めます。私はそれが真にリデューサーの数を制限したことを確認する簡単な方法はありません...しかしそれはすべきです。
私はこれを試してみますが、この解決策では、このレポートで使用されているすべてのクエリに対して「グローバル」な数のレデューサーしか設定されていませんが、設定できませんこれはクエリごとに行われます。 – wlk
はい、そうです。一般に、レポートは単一のクエリに基づいています。もちろん、これは必ずしもそうではありません。だから私はこの制限があなたに影響することは珍しいと思う。それが重要だと思いますか? – mdahlman
現時点では、テーブルやチャート(PDFの20-30ページなど)に関するレポートが多数ありますが、基本的にはテーブル/チャートごとに1つのクエリが実行されるため、約20-30のクエリが実行されます(HiveとRDBMSの異なるデータソース: – wlk