[HADOOP] 파이썬에서 캐럿 A를 구분
HADOOP파이썬에서 캐럿 A를 구분
37101000ssd48800^A1420asd938987^A2011-09-10^A18:47:50.000^A99.00^A1^A0^A
37101000sd48801^A44557asd03082^A2011-09-06^A13:24:58.000^A42.01^A1^A0^A
그래서 처음에 나는 문자 그대로 그것을 시도했다.
line = line.split("^A")
그리고 또한
line = line.split("\\u001")
이 작업을 수행하면 첫 번째 방법이 로컬 컴퓨터에서 작동합니다.
cat input.txt | python mapper.py
로컬로 잘 실행되지만 (input.txt는 위의 데이터 임), hadoop 스트리밍 클러스터에서는 실패합니다.
누군가는 "\\ u001"을 구분 기호로 사용해야한다고 말했지만 내 로컬 시스템이나 클러스터에서 작동하지 않습니다.
내가 로컬에서 디버깅하는 경우 :
cat input.txt | python mapper.py | sort | python reducer.py
로컬에서 구분 기호로 "^ A"를 사용하지만 클러스터에서 실행할 때 오류가 발생하며 오류 코드가 너무 도움이되지 않습니다.
이 디버깅을 어떻게 할 수 있습니까? 감사
해결법
-
==============================
1.원래 데이터가 구분 기호로 control-A를 사용하고 데이터를 나열하는 데 사용하는 것과 같이 ^ A로 인쇄되는 경우 두 가지 선택 사항이 있습니다.
원래 데이터가 구분 기호로 control-A를 사용하고 데이터를 나열하는 데 사용하는 것과 같이 ^ A로 인쇄되는 경우 두 가지 선택 사항이 있습니다.
후자는 거의 항상 당신이 정말로 원하는 것입니다. 이것이 당신에게서 작동하지 않는 이유는 split ( '\\ u001')을 써서 역 슬래시를 이스케이프 처리했기 때문에, control-A보다는 리터럴 문자열 \ u001에서 분리된다는 것입니다.
원래 데이터에 ^ A (캐럿 뒤에 A가옵니다)가 구분 기호로 사용되는 경우 split ( '^ A')을 사용하십시오.
from https://stackoverflow.com/questions/13462006/delimiting-carat-a-in-python by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 하이브의 외부 테이블과의 혼동 (0) | 2019.06.30 |
---|---|
[HADOOP] 코끼리 - 새를 하이브와 함께 사용하여 프로토프 데이터 읽기 (0) | 2019.06.30 |
[HADOOP] Spark Shell with Yarn - 오류 : 원사 응용 프로그램이 이미 종료되었습니다! 응용 프로그램 마스터를 종료 할 수 없거나 실행하지 못했을 수 있습니다. (0) | 2019.06.30 |
[HADOOP] hbase를 사용하여 이미지, 비디오 및 오디오 유형 처리 (0) | 2019.06.30 |
[HADOOP] API를 통해 Hadoop 카운터 값에 액세스하는 방법은 무엇입니까? (0) | 2019.06.30 |