Pyspark获取hdfs上多个文件

(作者:陈玓玏)

开始还不太熟悉,想着这个需求可以一分为二:

  1. 我想直接读取所有文件并合并结果;
  2. 我想获取文件路径,然后再一个一个获取结果。

第一种,可以用
sc.textFile(path),直接批量读取文件

第二种,我暂时没找到pyspark里的好方法,所以我直接用命令行+解析命令行结果的操作进行的。

  1. 命令行获取文件路径:
d = os.popen("hadoop fs -ls /user/log/ctm_api_logs | awk '{print $8}' ").read().split('\n')
  1. 解析命令行结果:
for j in d:
        print(j)
        df = spark.read.format('json').load(j)

第三种,pyspark可以直接读取一整个路径里所有的压缩文件发现这个方法更好用,直接解析,因此没必要用textFile,也没必要把路径全部提取出来再解析,可以直接解析一整个文件夹:

df = spark.read.format('json').load('/user/log/ctm_api_logs')

猜你喜欢

转载自blog.csdn.net/weixin_39750084/article/details/109494534