먼저, 클러스터에 따라 Apache Pig 버전 0.11.0-cdh4.3.0 (rexported)을 실행하고 있습니다. 그러나 0.11.0-cdh4.5.0을 사용합니다. 똑똑한 결정이 아니라는 것을 알고 있습니다.하지만 두 가지 문제가 있기 때문에 여기에서 겪고있는 문제와 관련이 있다고 생각하지 않습니다. 돼지 v0.11.0돼지가 자신의 중간 데이터를 읽을 수 없습니다
나는 스크립트가 있습니다. 이는 구조적으로 다음과 같습니다 (유효한 돼지 AFAIK 입력 모두 사용자 정의 UDF의 돌아 가기 DataByteArray 유형) :
LOAD USING parquet.pig.ParquetLoader();
FOREACH GENERATE some of the fields
GROUP BY (a,b,c)
FOREACH GENERATE FLATTEN(group) AS (a,b,c), CustomUDF1(some_value) AS d
FOREACH GENERATE FLATTEN(CubeDimensions(a,b,c)) AS (a,b,c) , d
GROUP BY (a,b,c)
FOREACH GENERATE FLATTEN(group) AS (a,b,c), SUM(some_value), CustomUDF2(some_value)
STORE USING parquet.pig.ParquetStorer();
돼지 두 맵리 듀스 작업이를 분할합니다. CubeDimensions가 첫 번째 또는 두 번째로 발생하는지 확실하지 않지만 첫 번째 작업의 축소 단계에서 발생하는 것으로 판단됩니다.
그래서 두 번째 작업의 매핑 단계는 중간 데이터를 읽는 것보다 더 아무것도하지 않으며, 이런 곳이다 ". 예기치 않은 데이터 유형 49 스트림에서 발견"
@ org.apache.pig.data.BinInterSedes는 : 422
나는 수는 모두 48, 49 일 본과 어느 것도 BinInterSedes 클래스에 존재했습니다
그러나이 때문에 돼지의 자신이다 중간 산출, 나는 그것이 잘못 될 수 있던 곳에 확실히 얻지 않는다. 두 개의 사용자 정의 UDF 모두 유효한 유형을 반환하며, Pig는 알고있는 유형 만 사용하여 확실히 저장합니다.
도움을 주시면 감사하겠습니다.
'CustomUDF1'이 (가)있는 행 다음에 데이터를 저장해 보았습니까? –
필자는이를 고려해 보았으나, Pigs BinStorage가 우리가 사용하는 ParquetStorage보다 중간 날짜에 더 효과적 일 것이라고 생각했습니다. 나는 그것을 가서 다시 여기에보고 할 것이다. –
데이터 세트가 상당히 크기 때문에 시간이 오래 걸릴 수 있습니다. DataByteArray에 새 레코드 (0x01 0x02 0x03 내가 수집 한 것)의 시작을 나타내는 바이트 시퀀스가 포함되어 있으면 파일이 손상 될 수 있습니까? –