2014-09-10 2 views
0

В кустах я хочу распределить таблицу по одному столбцу и преобразовать с помощью python для каждой распределенной части.как распределить перед преобразованием в улье?

Например:

Я хочу операцию к записи с определенным номером столбца D, как это:

from 
    (select * 
    from raw_table 
    where D=12345 
    sort by A) 
    sb 
insert overwrite table u_12345 
partition (X,Y) 
select transform(cast(A as double),B,C,D,E,F,X,Y) 
using 'hello.py' 
as A,B,C,D,E,F,X,Y 
; 

Теперь я хочу сделать это для всех различных чисел столбца D, я написал код:

from raw_table 
insert overwrite table clean_data 
partition (X,Y) 
select transform(cast(A as double),B,C,D,E,F,X,Y) 
using 'hello.py' 
as A,B,C,D,E,F,X,Y 
distribute by D 
; 

Но это не работает так, как я хочу.

ответ

0

Вы можете использовать распределение суб-запрос:

Я не проверял это один:

From (select A,B,C,D,E,F,X,Y from raw_table distribute by D) 
insert overwrite table clean_data 
partition (X,Y) 
select transform(cast(A as double),B,C,D,E,F,X,Y) 
using 'hello.py' 
as A,B,C,D,E,F,X,Y ; 

Работа на моем кластере:

create table clean-data as 
select 
transform (key, B,C,D,E,F,G) 
USING 'reducer_script.py' as (key, B,C,D,E,F,G_reduced) 
from (key, B,C,D,E,F,G from raw_table distribute by KEY sort by KEY, D) alias ; 
Смежные вопросы