나는이 질문에 잠시 머물렀다. 다음과 같은 데이터 파일이 있습니다.돼지의 가방 값으로 묶기
2012/01/01 Name1 "Category1,Category2,Category3"
2012/01/01 Name2 "Category2,Category3"
2012/01/01 Name3 "Category1,Category5"
각 항목은 쉼표로 구분 된 범주 목록과 연결됩니다. 나는 다음과 같은 출력을 얻을, 카테고리 이름으로 그룹 수 있도록하고 싶습니다 :
Category1 Name1, Name3
Category2 Name1, Name2
...
Category5 Name3
(심지어 더 구체적으로, 나는 항목의 이름이 필요하지 않습니다 - 그 항목의 수의 단지 수를 카테고리가 할 것이다)
나는 쉼표로 구분 된 카테고리 필드를 가져 와서 돼지 가방으로 변환하는 UDF를 작성했다. 내 데이터 스키마는 다음과 같습니다. {date: chararray, name: chararray, categories: {t: (category:chararray)}}
실제로는 중첩 된 값으로 그룹화를 수행합니다. 행운없이 FOREACH 중첩 구문을 변형 해 보았습니다. 예를 들어 :
x = FOREACH myData
{
categoryNames = FOREACH categories GENERATE category;
GENERATE myData.Name, categoryNames;
}
내 생각은 구문의 종류는 내가 이상 그룹을 실행할 수 있습니다 (이름, 카테고리)의 튜플을 생성 할 수있는 것이 었습니다. 그러나 실제 출력은 가방 전체입니다. 다시 제곱 1로 돌아갑니다. 진행 방법에 대한 아이디어가 없습니다. 도움/피드백이 가장 잘 평가 될 것입니다. 감사!
가방에 붙어있는 FLATTEN의 동작이 여러개의 튜플을 생성한다는 것을 알지 못했습니다. 정확히 달성하려고 시도한 것입니다. 감사! – Inverseofverse