2012-03-21 2 views
2

하이브 쿼리를 위해 감속기의 수를 설정하려고 할 때를 제외하고는 정상적으로 실행되는 하이브를 사용하여 Jaspersoft iReport를 사용하여 일부 보고서를 실행하려고합니다. 이 질문은 Hive JDBC를 사용하여 감속기의 수를 설정하는 일반적인 경우에 적용될 수 있다고 생각합니다.Jaspersoft iReport - 하이브 쿼리의 축소 기 수를 설정하는 방법은 무엇입니까?

어떻게하면됩니까?

답변

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 연결에이 속성을 넣을 수 있습니다. 그러나 내가 알 수있는 한, 하이브는 이것을지지하지 않습니다. 하지만 당신은 "집합"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> 

보고서가 다음과 같이 작동하는지 확인합니다. 내 하위 데이터 집합은 예상했던 것처럼 테이블 구성 요소를 채 웁니다. 나는 그것이 감속기의 수를 정말로 제한했다는 것을 확인하는 간단한 방법이 없다 ... 그러나 그것은해야한다. (이 경우 알려주십시오.)

+0

이 방법을 사용하면 좋겠지 만이 솔루션은이 보고서에 사용 된 모든 쿼리에 대해 '글로벌'숫자의 감속기 만 설정하지만 여전히 설정할 수 없습니다 이 쿼리 단위. – wlk

+0

네, 맞습니다. 일반적으로 보고서는 단일 쿼리를 기반으로합니다. 물론 이것이 항상 그런 것은 아닙니다. 그래서 나는이 제한이 당신에게 영향을 미치는 것은 드문 일이라고 생각합니다. 그것이 중요 할 것으로 기대합니까? – mdahlman

+0

현재 테이블이나 차트 (PDF 20-30 페이지와 같은)에 대한 많은 보고서가 있지만 기본적으로 테이블/차트 당 하나의 쿼리 만 실행하므로 20-30 개의 쿼리 (하이브 및 RDBMS)를 실행합니다. – wlk