[HADOOP] 파이썬을 사용하여 JSON을 HDFS에 저장
HADOOP파이썬을 사용하여 JSON을 HDFS에 저장
현재 JSON을 반환하는 API에 액세스하는 Python 스크립트가 있습니다. 그런 다음 JSON 문자열을 가져 와서 로컬 파일 시스템의 파일로 저장 한 다음 수동으로 HDFS로 옮깁니다. 파이썬 스크립트가 로컬 파일 시스템을 먼저 누르는 대신 HDFS에 직접 저장하도록 이것을 변경하고 싶습니다. 현재 HDFS 및 DFS 명령을 사용하여 파일을 저장하려고하지만 파일을 저장하려고 할 때 파일이 아니라 JSON 문자열이기 때문에 copy 명령이 올바른 방법이라고 생각하지 않습니다.
현재 코드
import urllib2
import json
import os
f = urllib2.urlopen('RESTful_API_URL.json')
json_string = json.loads(f.read().decode('utf-8'))
with open('\home\user\filename.json', 'w') as outfile:
json.dump(json_string,outfile)
새로운 코드
f = urllib2.urlopen('RESTful_API_URL.json')
json_string = json.loads(f.read().decode('utf-8'))
os.environ['json_string'] = json.dump(json_string)
os.system('hdfs dfs -cp -f $json_string hdfs/user/test')
해결법
-
==============================
1.문제는이 스레드와 동일하다고 생각합니다. 데이터를 복사하지 않고 hdfs로 직접 스트리밍합니다.
문제는이 스레드와 동일하다고 생각합니다. 데이터를 복사하지 않고 hdfs로 직접 스트리밍합니다.
먼저이 명령은 stdin을 hdfs 파일로 리디렉션 할 수 있습니다.
hadoop fs -put - /path/to/file/in/hdfs.txt
그런 다음 파이썬 에서이 작업을 수행 할 수 있습니다.
os.system('echo "%s" | hadoop fs -put - /path/to/file/in/hdfs.txt' %(json.dump(json_string)))
-
==============================
2.http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/FileSystemShell.html#put에서 HDFS put 명령을 살펴보십시오.
http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/FileSystemShell.html#put에서 HDFS put 명령을 살펴보십시오.
다음과 같은 구문을 사용하여 표준 입력을 사용하여 명령 행에서 HDFS에 넣을 수 있습니다 (-put-stdin에서 읽은 것을 의미 함).
hadoop fs -put - hdfs://nn.example.com/hadoop/hadoopfile
파이썬 코드 내에서이 명령을 하위 프로세스로 시작할 수 있다면 json 문자열을 하위 프로세스로 파이프 할 수 있어야합니다.
from https://stackoverflow.com/questions/32099664/save-json-to-hdfs-using-python by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] SAS와의 Hadoop 연결 (0) | 2019.08.16 |
---|---|
[HADOOP] API를 통해 Hbase 리전 크기 가져 오기 (0) | 2019.08.16 |
[HADOOP] dse 4.5에서 스파크 마스터를 실행할 수없고 슬레이브 파일이 없습니다. (0) | 2019.08.16 |
[HADOOP] Amazon EMR 및 Hive : 외부 테이블에 하위 디렉토리를로드 할 때 "java.io.IOException : 파일이 아님"예외가 발생 함 (0) | 2019.08.16 |
[HADOOP] spark Yarn 모드 spark-submit에서 applicationId를 얻는 방법 (0) | 2019.08.16 |