2017-09-13 10 views
0

5 노드 클러스터가 있고 YARN이 배포되었습니다. 2 개의 네임 노드와 3 개의 데이터 노드. 내 코드가 spark에 제출되는 동안. CSV로 데이터를 내보내려고하는데, 그렇게하면 데이터가 2 개의 데이터 노드로 내보내지고 둘 다 내보내기 폴더 안에 다른 콘텐츠가 생깁니다. 하나는 _SUCCESS 파일을 가지며 다른 하나는 내 보낸 csv (part- *)를 갖습니다. _SUCCESS 파일이있는 노드와 응용 프로그램이 실행되는 노드가 동일하지만 실제 CSV가 다른 노드에 있기 때문에 응용 프로그램이 빈 경로를 갖게됩니다. 또한 때로는 _SUCCESS 파일이 생성되지 않지만 part - *. csv가 생성되지만 다른 노드에서 응용 프로그램이 다시 같은 노드에서 실행되지 않으면 다시 공백 경로로 끝납니다. 다음과 같은 방법 :spark scala on yarn 클러스터 CSV 내보내기

dataframe.coalesce (1) .write.option ("헤더", "진정한") CSV (경로) 대신 파일의

+0

ur 경로의 값은 무엇입니까? – bigdatamann

+0

file : /// <리눅스 시스템의 절대 경로> – sanju4evr

답변

0

:. /// 은 왜를 제공하지 않습니다 hdfs/s3 위치?

로컬 경로를 지정하면 데이터가 작업자 노드에 저장됩니다! 2 개의 파티션이 있기 때문에 3 대신 2 개의 노드에 데이터가있을 것입니다.

+0

내가 내보내려고하는 데이터는 cassandra에 있으며 처리를 마친 후에 내보내려고합니다. UI 파일에 대한 액세스가 필요하기 때문에 내보내기를 Linux 파일 시스템에서 수행해야합니다. – sanju4evr

+0

일반적으로 몇 개의 부품 파일이 있습니까? – bigdatamann

+0

내가 합체를 사용했기 때문에 나는 하나의 part- * 파일을 얻고있다. 그러나 문제는 애플리케이션이 실행되지 않는 노드에서 생성된다는 것입니다. 따라서 datanode3에서 응용 프로그램을 실행하는 경우 datanode1 및 datanode3에 내보내기 폴더가 만들어집니다. datenode1은 part - *. csv 파일을 포함하고 datanode3은 _SUCCESS를 포함합니다. 절대 경로는 두 노드에서 동일합니다. 응용 프로그램이 datanode3에서 실행 중이기 때문에 파일 위치가있는 노드의 localhost를 반환하지만 datanode1은 해당 위치에 파일이 포함되어 있지 않습니다. – sanju4evr