Если вы намереваетесь проверить, является ли URI каталогом или не использует python, вы можете проверить альтернативно, как показано ниже:
import subprocess
location='hdfs://nameservice1/client/tdb_histscen_2/part-00001'
filexistchk="hdfs dfs -test -e "+location+";echo $?"
#echo $? will print the exit code of previously execited command
filexistchk_output=subprocess.Popen(filexistchk,shell=True,stdout=subprocess.PIPE).communicate()
filechk="hdfs dfs -test -d "+location+";echo $?"
filechk_output=subprocess.Popen(filechk,shell=True,stdout=subprocess.PIPE).communicate()
#Check if location exists
if '1' not in str(filexistchk_output[0]):
#check if its a directory
if '1' not in str(filechk_output[0]):
print('The given URI is a directory: '+location)
else:
print('The given URI is a file: '+location)
else:
print(location+ " does not exist. Please check the URI")
О команде:
hdfs dfs -test - [ezd] URI
Опции: опция -e проверит, существует ли файл, и вернет 0, если истина.
Опция -z проверит, имеет ли файл нулевую длину, и вернет 0, если истина. Опция -d проверит, является ли путь каталогом, и вернет 0, если истина. Пример: hdfs dfs -test -d $ yourdir