2011-12-14 1 views
8
Pig: 0.8.1-cdh3u2 
Hadoop: 0.20.2-cdh3u0 

경고를 디버깅하는 중입니다.하지만 개별 경고를 어디에서나 인쇄 할 수는 없습니다. -w 또는 aggregate.warnings=false 스위치를 통해 집계를 비활성화하면 요약 메시지가 제거되지만 실제 경고도 제거되므로 어떤 유형 변환이 실패했는지 알 수 없습니다.돼지 집계되지 않은 경고 출력 위치?

이 실행을 위해 돼지 로그에 기록 된 것은 없으며 개별 경고가있는 로그를 찾을 수있는 곳이 없습니다. 나는 명백한 것을 놓쳤는가 또는 간단하게 작동하지 않는가?

+0

이 질문에 대한 답변을 기다리겠습니다. 나는 보통 기록을 수동으로 찾는다. –

+0

저는 이미 1 억 레코드에 가까워졌으며 각 행에 300 개 이상의 열이있는 매일 2 분의 1을 더했습니다. 그리고 이것들은 십진수입니다. 건초 더미 분야에서 바늘을 찾는 것보다 도구 지원이 부족합니다. – andrew

+0

내가 생각할 수있는 유일한 방법은 데이터를 돼지에게'chararray '로로드 한 다음 변환하려고하는 UDF를 작성하는 것입니다. 예외가 발생하면 항목을 반환하고 그렇지 않으면 아무 것도 반환하지 않습니다. –

답변

0

하둡 작업 로그는 각 계산 노드에 로컬로 기록됩니다. 따라서 먼저 분산 파일 시스템에 로그 파일을 수집하여 분석 할 수 있도록 hadoop 클러스터 관리자를 설정해야합니다. HDFS에서 실행할 수있는 당신이 로그를 설정 한 후

log-destination-uri = hdfs://host123:45678/user/hod/logs 

http://hadoop.apache.org/docs/r0.17.0/hod_user_guide.html#Collecting+and+Viewing+Hadoop+Logs

에서 HOD 문서를 참조하십시오 : 당신은 하둡 주문형 (http://hadoop.apache.org/docs/r0.17.0/hod.html)를 사용하는 경우 당신은 같은 것을 지정하여 그렇게 할 수 있어야한다 불쾌한 전환을 찾기위한 간단한 PIG 쿼리.

a1= LOAD '*.log' USING PigStorage(']') ; 
a2= FILTER a1 by ($1 MATCHES ' WARN.*Unable to interpret value.*'); 
dump a2; 
0

그것은 문제의 원인이되는 데이터 또는 값 찾기 어렵지만,이 문제를 생성하는 열 적어도 당신은 찾을 수 있습니다 다음과 같은 뭔가 트릭을 할해야합니다. 열을 찾으면 동적 호출자을 사용하면 유형 변환에 도움이 될 수 있습니다.


동적 호출자를 사용하는 방법 :
이 ConvertToDouble InvokeForDouble을 정의 ('java.lang.Double.parseDouble', '문자열');

ConvertToDouble (column_name);