Pyspark中的HDFS文件存在检查

Moh*_*ooq 4 python-3.x pyspark

任何人都可以建议在pyspark中检查文件存在的最佳方法。

目前正在使用以下方法进行检查,请指教。

def path_exist(path):

try:
    rdd=sparkSqlCtx.read.format("orc").load(path)
    rdd.take(1)
    return True

except Exception as e:
    return False
Run Code Online (Sandbox Code Playgroud)

eme*_*eth 8

您可以org.apache.hadoop.fs.{FileSystem, Path}通过 Py4j使用 Java API 。

jvm = spark_session._jvm
jsc = spark_session._jsc
fs = jvm.org.apache.hadoop.fs.FileSystem.get(jsc.hadoopConfiguration())
if fs.exists(jvm.org.apache.hadoop.fs.Path("/foo/bar")):
    print("/foo/bar exists")
else:
    print("/foo/bar does not exist")
Run Code Online (Sandbox Code Playgroud)


Ahm*_*med 6

您可以使用subprocess以下命令从 python 执行 hdfs 命令:

import subprocess

proc = subprocess.Popen(['hadoop', 'fs', '-test', '-e', path])
proc.communicate()

if proc.returncode != 0:
    print '%s does not exist' % path
else : 
    print '%s exists' % path
Run Code Online (Sandbox Code Playgroud)

另请参阅:apache spark - 检查文件是否存在