2017-03-07 5 views
0

, 내가이 정보를 얻을 :처리 할 수 ​​없습니다 행이

수 없습니다 프로세스 행 입출력 크기보다 더 큰 (row_size = 13.42 MB, null_indicators_size = 0) . 이 쿼리를 실행하려면 IO 크기 (--read_size 옵션)를 늘리십시오. (가) 설명

은 다음과 같다 :

06:SORT 
| order by: count(*) DESC 
| hosts=1 per-host-mem=unavailable 
| tuple-ids=7 row-size=24B cardinality=30000000 
| 
05:AGGREGATE [FINALIZE] 
| output: count(*) 
| group by: group_concat(host) 
| having: count(*) > 10 
| hosts=1 per-host-mem=unavailable 
| tuple-ids=6 row-size=24B cardinality=30000000 
| 
04:AGGREGATE [FINALIZE] 
| output: group_concat(host) 
| group by: gridsum_id 
| hosts=1 per-host-mem=unavailable 
| tuple-ids=4 row-size=31B cardinality=30000000 
| 
08:MERGING-EXCHANGE [UNPARTITIONED] 
| order by: g_id ASC, server_time ASC, session_order ASC 
| limit: 30000000 
| hosts=1 per-host-mem=unavailable 
| tuple-ids=2 row-size=46B cardinality=30000000 
| 
03:TOP-N [LIMIT=30000000] 
| order by: g_id ASC, server_time ASC, session_order ASC 
| hosts=1 per-host-mem=1.29GB 
| tuple-ids=2 row-size=46B cardinality=30000000 
| 
02:HASH JOIN [INNER JOIN, BROADCAST] 
| hash predicates: b.g_id = r.g_id 
| runtime filters: RF000 <- r.g_id 
| hosts=1 per-host-mem=2.00GB 
| tuple-ids=1,0 row-size=65B cardinality=unavailable 
| 
|--07:EXCHANGE [BROADCAST] 
| | hosts=18 per-host-mem=0B 
| | tuple-ids=0 row-size=46B cardinality=unavailable 
| | 
| 00:SCAN HDFS [u_g.botao_route_all r, RANDOM] 
|  partitions=1/1 files=18 size=213.24MB 
|  predicates: r.host NOT IN ('-', '(lost)'), r.session_order > 0 
|  table stats: unavailable 
|  column stats: unavailable 
|  hosts=18 per-host-mem=96.00MB 
|  tuple-ids=0 row-size=46B cardinality=unavailable 
| 
01:SCAN HDFS [u_g.botao_id b, RANDOM] 
    partitions=1/1 files=1 size=5.53MB 
    predicates: b.profile_id = 2473 
    runtime filters: RF000 -> b.g_id 
    table stats: 160891 rows total 
    column stats: unavailable 
    hosts=1 per-host-mem=32.00MB 
    tuple-ids=1 row-size=19B cardinality=16089 
---------------- 

중 하나가 나를 도울 수, 감사 제비.

답변

0

메모리가 부족하고 유출 IO 버퍼 크기가 제한되어 있기 때문에이 문제가 발생합니다. 유출이 발생하면

Status BufferedTupleStream::NewBlockForWrite(int min_size, bool* got_block) { 
    DCHECK(!closed_); 
    if (min_size > block_mgr_->max_block_size()) { 
     return Status(Substitute("Cannot process row that is bigger than the IO size " 
      "(row_size=$0). To run this query, increase the io size (--read_size option).", 
      PrettyPrinter::Print(min_size, TCounterType::BYTES))); 
} 

는, 임팔라, 적어도 하나의 행하는데 충분한 크기 인 IO 버퍼를 필요로하는 시간에 연속하여 중간 튜플 행을 쓸 필요가있다. 귀하의 경우이 조건이 충족되지 않아 앞서 언급 한 오류가 발생합니다.

큰 메모리로 쿼리를 실행하거나 --read_size 옵션으로 블록 크기를 조정할 수 있습니다.이 경우 카운터가 직관적입니다.