복붙노트

[HADOOP] pydoop없이 HDFS Python의 모든 파일 나열

HADOOP

pydoop없이 HDFS Python의 모든 파일 나열

centos 6.5에서 실행되는 hadoop 클러스터가 있습니다. 현재 파이썬 2.6을 사용하고 있습니다. 관련이없는 이유로 파이썬 2.7로 업그레이드 할 수 없습니다. 이 불행한 사실 때문에 pydoop을 설치할 수 없습니다. hadoop 클러스터 내부에는 raw "yearmonthdaytimehour".txt라는 대량의 원시 데이터 파일이 있습니다. 괄호 안의 모든 것은 숫자입니다. 파이썬의 hadoop 디렉토리에있는 모든 파일 목록을 만드는 방법이 있습니까? 따라서 프로그램은 다음과 같은 목록을 만듭니다.

listoffiles=['raw160317220001.txt', 'raw160317230001.txt', ....] 

그것은 2 시간 15 일부터 파일을 가져 오기 때문에 내가 훨씬 쉽게해야하는 모든 것을 할 것이다. 나는 단지 dothing (listoffiles [39])을 호출하면된다. 내가 이런 식으로 해야하는 이유와 관련이없는 합병증이 있습니다.

로컬 디렉토리 로이 작업을 쉽게 수행 할 수있는 방법이 있지만 hadoop은 모든 것을 조금 더 복잡하게 만듭니다.

해결법

  1. ==============================

    1.pydoop이 작동하지 않으면 Python 2.6에서 작동하는 Snakebite 라이브러리를 사용해 볼 수 있습니다. 또 다른 옵션은 WebHDFS API를 활성화하고 요청 또는 이와 유사한 것으로 직접 사용하는 것입니다.

    pydoop이 작동하지 않으면 Python 2.6에서 작동하는 Snakebite 라이브러리를 사용해 볼 수 있습니다. 또 다른 옵션은 WebHDFS API를 활성화하고 요청 또는 이와 유사한 것으로 직접 사용하는 것입니다.

    print requests.get("http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=LISTSTATUS").json()
    

    Snakebite와 함께 :

    from snakebite.client import Client
    client = Client("localhost", 8020, use_trash=False)
    for x in client.ls(['/']):
        print x
    
  2. ==============================

    2.hdfs3를 확인하는 것이 좋습니다.

    hdfs3를 확인하는 것이 좋습니다.

    >>> from hdfs3 import HDFileSystem
    >>> hdfs = HDFileSystem(host='localhost', port=8020)
    >>> hdfs.ls('/user/data')
    >>> hdfs.put('local-file.txt', '/user/data/remote-file.txt')
    >>> hdfs.cp('/user/data/file.txt', '/user2/data')
    

    Snakebite와 마찬가지로 hdfs3는 통신에 프로토 타입을 사용하고 JVM을 무시합니다. Snakebite와 달리 hdfs3는 kerberos 지원을 제공합니다

  3. ==============================

    3.이 Python 프로젝트를 추천합니다 : https://github.com/mtth/hdfs HttpFS를 사용하며 실제로 매우 간단하고 빠릅니다. Kerberos로 클러스터에서 사용하고 있으며 매력처럼 작동합니다. 네임 노드 또는 HttpFs 서비스 URL 만 설정하면됩니다.

    이 Python 프로젝트를 추천합니다 : https://github.com/mtth/hdfs HttpFS를 사용하며 실제로 매우 간단하고 빠릅니다. Kerberos로 클러스터에서 사용하고 있으며 매력처럼 작동합니다. 네임 노드 또는 HttpFs 서비스 URL 만 설정하면됩니다.

  4. from https://stackoverflow.com/questions/36379232/list-all-files-in-hdfs-python-without-pydoop by cc-by-sa and MIT license