Как проверить, существует ли файл в HDFS с использованием Python - PullRequest
0 голосов
/ 02 июля 2018
import subprocess
def run_cmd(args_list):
    print('Running system command: {0}'.format(' '.join(args_list)))
    proc = subprocess.Popen(args_list, stdout=subprocess.PIPE,
            stderr=subprocess.PIPE)
    proc.communicate()
    return proc.returncode

cmd = ['hadoop', 'fs', '-test', '-e', hdfs_file_path]
code = run_cmd(cmd)
if code:
    print 'file not exist'

Когда я даю эту команду, чтобы увидеть, существует ли файл в HDFS, он выдает мне эту ошибку:

RuntimeError: Error running command: hadoop fs -test -f /app/tmp/1.json. Return code: 1, Error: b''

Как решить эту проблему?

1 Ответ

0 голосов
/ 02 июля 2018

Я бы использовал API вместо вызова подпроцессов. Для этого всегда лучше использовать API, например snakebite , созданный с помощью spotify. В этом примере проверяется, существует ли файл в указанной папке:

from snakebite.client import Client
client = Client("localhost", 8020, use_trash=False)
return "fileName" in client.ls(['hdfs_path'])
...