[HADOOP] Python을 통해 HDFS에서 여러 파일 처리
HADOOPPython을 통해 HDFS에서 여러 파일 처리
HDFS에는 약 10,000 개의 .xml 파일이 포함 된 디렉토리가 있습니다. 파일을 가져 와서 처리하는 파이썬 스크립트 "processxml.py"가 있습니다. hdfs 디렉토리의 모든 파일에서 스크립트를 실행할 수 있습니까, 아니면 먼저 로컬로 복사해야합니까?
예를 들어, 로컬 디렉토리의 파일에서 스크립트를 실행하면 다음이 있습니다.
cd /path/to/files
for file in *.xml
do
python /path/processxml.py
$file > /path2/$file
done
그래서 기본적으로 어떻게 똑같이 할 수 있지만 이번에는 파일이 hdfs에 있습니까?
해결법
-
==============================
1.기본적으로 두 가지 옵션이 있습니다.
기본적으로 두 가지 옵션이 있습니다.
1) hadoop 스트리밍 커넥터를 사용하여 MapReduce 작업을 작성하십시오 (여기서는 맵 부분 만 필요함). 쉘 또는 쉘 스크립트에서이 명령을 사용하십시오.
hadoop jar <the location of the streamlib> \ -D mapred.job.name=<name for the job> \ -input /hdfs/input/dir \ -output /hdfs/output/dir \ -file your_script.py \ -mapper python your_script.py \ -numReduceTasks 0
2) PIG 스크립트를 작성하고 파이썬 코드를 제공하십시오. 다음은 스크립트의 기본 예입니다.
input_data = LOAD '/hdfs/input/dir'; DEFINE mycommand `python your_script.py` ship('/path/to/your/script.py'); updated_data = STREAM input_data THROUGH mycommand PARALLEL 20; STORE updated_data INTO 'hdfs/output/dir';
-
==============================
2.파일에서 데이터를 처리해야하거나 / cp / rm / etc를 이동하십시오. 파일 시스템 주위에 PySpark (Python 인터페이스가있는 Spark)가 최고의 옵션 (속도, 메모리) 중 하나입니다.
파일에서 데이터를 처리해야하거나 / cp / rm / etc를 이동하십시오. 파일 시스템 주위에 PySpark (Python 인터페이스가있는 Spark)가 최고의 옵션 (속도, 메모리) 중 하나입니다.
from https://stackoverflow.com/questions/35070998/processing-multiple-files-in-hdfs-via-python by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Spark 프로그램의 HDFS 복제 요소를 어떻게 변경합니까? (0) | 2019.08.16 |
---|---|
[HADOOP] Hive의 정규 표현식에서 여러 일치 항목 처리 (0) | 2019.08.16 |
[HADOOP] 임팔라 : schemata가 다른 여러 개의 마루 파일을 쿼리하는 방법 (0) | 2019.08.16 |
[HADOOP] 하둡-값없이 텍스트 출력을 수집하는 방법 (0) | 2019.08.16 |
[HADOOP] SAS와의 Hadoop 연결 (0) | 2019.08.16 |