복붙노트

[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. ==============================

    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. ==============================

    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 문자열을 하위 프로세스로 파이프 할 수 있어야합니다.

  3. from https://stackoverflow.com/questions/32099664/save-json-to-hdfs-using-python by cc-by-sa and MIT license