2012-06-07 1 views
2

나는 여러 가지 데이터를 계정에서 계산하고 각 데이터를 다른 파일에 저장합니다 (각 계산에는 다른 스크립트가 있음). 그런 다음 계정의 모든 데이터를 결합하는 최종 파일을 만들어야합니다. 이를 수행하는 한 가지 방법은 각 디렉토리를 다른 디렉토리에 저장하고 최종 스크립트에서 각 디렉토리를 스키마로로드하고 계정 및 인쇄로 가입 (또는 공동 그룹화)하는 것입니다. 여기에서 문제는, 나는 어느 디렉토리에로드 할 것인지 돼지에게 알려줘야한다는 것이다. 좀 더 일반적인 스크립트를 만들어서 더 많은 계산을 추가하기가 쉬워서 부모 디렉토리를 만들고 하위 디렉토리에 모든 출력을 저장했습니다. 다음 나는, 그냥 내 출력 디렉토리 아래의 모든 하위 디렉토리를로드 그가로드해야 파일 돼지를 말할 필요가 없습니다,이 스크립트일반 조인 스크립트

attributes_data=  load '$attributes_data' using CSVLoader; 
union_data=   group attributes_data by TRIM ($0); 
final_output=  foreach union_data generate 
      FLATTEN(Merge_Bags(attributes_data)); 
store order_data into '$final_attr' using AttributesStorer; 

이 방법을 썼다. 여기에있는 문제는 그룹 옆에있는 가방에있는 튜플 순서가 일관성이 없다는 것입니다. 따라서 최종 결과에 일관성있는 순서가 없으므로 문제가됩니다.

최종 결과에 데이터의 일부 순서를 저장하면서 가능한 한 스크립트를 포괄적으로 만들려는 아이디어는 정말 감사 할 것입니다. 그 목적을 제공하는 경우

감사

답변

0

그룹화하기 전에, ORDER BY 절을 사용하여 시도 할 수 있습니다.

+0

이후 그룹화가 순서 유지를 보장하지 않는다고 생각합니다. [ORDER BY의 돼지 문서] (https://pig.apache.org/docs/r0.11.1/basic.html#order-by) 유망한 것 같지 않습니다. – Eyal

관련 문제