【问题标题】:Jaspersoft iReport - how to set number of reducers for Hive query?Jaspersoft iReport - 如何设置 Hive 查询的减速器数量?
【发布时间】:2012-03-21 13:20:32
【问题描述】:

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

我该怎么做?

【问题讨论】:

    标签: hadoop jasper-reports ireport hive


    【解决方案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 语句作为主要报告查询来解决此问题。然后将“选择”查询作为子数据集。这是我测试这个想法的报告中的一个 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 组件,就像您期望的那样。我没有简单的方法来确认它确实限制了减速器的数量……但它应该。 (如果有请告诉我们!)

    【讨论】:

    • 这很好,我会试试这个,但是这个解决方案只为这个报告中使用的每个查询设置“全局”reducer 数量,我仍然无法在每个查询的基础上设置这个.
    • 是的,你是对的。通常,报告基于单个查询。当然,情况并非总是如此。所以我认为这种限制会影响你是不寻常的。你认为它很重要吗?
    • 目前我有许多带有表格或图表的报告(如 PDF 中的 20-30 页),它基本上每个表格/图表运行一个查询,因此它执行大约 20-30 个查询(来自不同的数据源:Hive 和 RDBMS)
    • 我认为这可能会使用子报表来工作,我可以在其中设置每个子报表的查询来设置所需的减速器数量
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    相关资源
    最近更新 更多