Jaspersoft iReport - 如何为Hive查询设置Reducer的数量?

时间:2012-03-21 13:20:33

标签: hadoop jasper-reports ireport hive

我正在尝试使用使用Hive的Jaspersoft iReport运行一些报告,运行正常,除了我尝试为Hive查询设置减少器数量的情况。我认为这个问题可能适用于使用Hive JDBC设置reducer数量的一般情况。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您不能将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并不支持这一点。但我认为您可以通过将“set”HiveQL语句作为主报表查询来解决此问题。然后将“select”查询作为子数据集。这是报告中的一个片段,我测试了这个想法:

<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组件。我没有一个简单的方法来确认它真正限制了减速器的数量......但它应该。 (如果有,请告诉我们!)