2
我試圖運行一些報告使用Jasperoft iReport使用Hive,它運行良好,除了情況,當我嘗試設置數量的Hive查詢減速器。我認爲這個問題可能適用於使用Hive JDBC設置一些reducer的一般情況。Jaspersoft iReport - 如何設置Hive查詢的reducer數量?
我該怎麼做?
我試圖運行一些報告使用Jasperoft iReport使用Hive,它運行良好,除了情況,當我嘗試設置數量的Hive查詢減速器。我認爲這個問題可能適用於使用Hive JDBC設置一些reducer的一般情況。Jaspersoft iReport - 如何設置Hive查詢的reducer數量?
我該怎麼做?
您不能將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連接。但據我所知,Hive並不支持這一點。但我想你可以通過將「設置」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組件。我沒有一個簡單的方法來確認它確實限制了減速器的數量......但它應該。 (請讓我們知道它是否!)
這很好,我會試試這個,但是這個解決方案只爲這個報告中使用的每個查詢設置了'全局'數量的reducer,但我仍然無法設置這在每個查詢的基礎上。 – wlk 2012-03-24 09:10:34
是的,你是對的。通常,報告基於單個查詢。當然,情況並非總是如此。所以我認爲這種限制會影響你是不尋常的。你認爲它很重要嗎? – mdahlman 2012-03-26 03:10:16
目前我有許多帶有表格或圖表的報告(例如PDF中的20-30頁),它基本上每個表/圖表運行一個查詢,因此它執行大約20-30個查詢(來自不同的數據源:Hive和RDBMS) – wlk 2012-03-26 08:51:10