【发布时间】:2012-03-21 13:20:32
【问题描述】:
我正在尝试使用 Jaspersoft iReport 使用 Hive 运行一些报告,它运行良好,除了我尝试为 Hive 查询设置减速器数量的情况。我认为这个问题可能适用于使用 Hive JDBC 设置减速器数量的一般情况。
我该怎么做?
【问题讨论】:
标签: hadoop jasper-reports ireport hive
我正在尝试使用 Jaspersoft iReport 使用 Hive 运行一些报告,它运行良好,除了我尝试为 Hive 查询设置减速器数量的情况。我认为这个问题可能适用于使用 Hive JDBC 设置减速器数量的一般情况。
我该怎么做?
【问题讨论】:
标签: hadoop jasper-reports 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 连接中。但据我所知,Hive 不支持这一点。但我认为您可以通过将“set”HiveQL 语句作为主要报告查询来解决此问题。然后将“选择”查询作为子数据集。这是我测试这个想法的报告中的一个 sn-p:
<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 组件,就像您期望的那样。我没有简单的方法来确认它确实限制了减速器的数量……但它应该。 (如果有请告诉我们!)
【讨论】: