2014-02-14 3 views
0

돼지를 처음 사용합니다.돼지에서 복수 맵을 함께 결합

[price#49, manages#"1d74426f-2b0a-4777-ac1b-042268cab09c"] 
: 어떤 포장하지 않고, 내가 출력이 하나의지도 싶습니다

{(price,49),(manages,"1d74426f-2b0a-4777-ac1b-042268cab09c")} 

: 나는하지만 이상하게 중첩 된 형식으로, 내가 원하는 정확히 답을 가지고있는 점에 왔

나는 이것을 얻기 위해 TOMAP을 사용했으나 병합 및 병합하는 방법을 알 수 없습니다.

{([price_specification#{"amount":49,"currency":"USD"}]),([manages#"newest-nodes/1d74426f-2b0a-4777-ac1b-042268cab09c"])} 

어떻게해야합니까?

답변

1

불행히도이 작업을 수행하는 기본 제공 기능이 없습니다. 자신 만의 UDF를 작성해야합니다. 다행히도, 이것은 간단한 것입니다. UDF를 인수로지도의 수를 취할 수

public Map<String, Object> exec(Tuple input) { 
    Map<String, Object> m = new HashMap<String, Object>(); 
    for (int i = 0; i < input.size(); i++) 
     m.putAll((Map<String, Object>) input.get(i)); 

    return m; 
} 

:

exec 방법은 뭔가를 갈 것입니다.

두 개 이상의지도가 키를 공유하는 경우 마지막으로 발견 된지도는 보관 된지도와 다른지도가 덮어 쓰기됩니다.

+0

고맙습니다. 많은 Google 검색 후 http://stackoverflow.com/questions/17847970/transform-bag-of-key-value-tuples-to-map-in-apache-pig를 찾았습니다. UDF를 사용하여 동일한 대답을 제안합니다 (언어로 파이썬을 사용하더라도). 그 대답은 결국 나를 위해 일했다. – cschneid