使用pyspark / python列出AWS S3上目录中的文件

时间:2017-03-29 14:26:25

标签: python amazon-s3 pyspark

所以,我是AWS S3和pyspark和linux的新手。我不知道从哪里开始。这是我的问题:

在linux中,我可以发出以下命令,可以看到文件夹中的文件:

import os
os.listdir('s3://datastore/L2/parquet')

使用python做类似的事情不起作用

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OSError: [Errno 2] No such file or directory: 's3://datastore/L2/parquet'

它给出错误:

pyspark

但是,SQLContext.read.parquetfrom pyspark.sql import SQLContext sqlContext = SQLContext(sc) df = sqlContext.read.parquet('s3://datastore/L2/parquet') 了解得很清楚:

SQLContext

它在os.listdir中有效并且在{{1}}中不起作用的任何原因?我在哪里可以开始清除我的困惑?除了“获得cs单身汉”之外的任何回复都会有所帮助。

1 个答案:

答案 0 :(得分:0)

因此,AWS s3与您的操作系统的文件系统不同。 AWS s3 ls命令和pyspark SQLContext.read命令正在执行与os.listdir命令不同的命令,该命令不知道如何从s3中读取内容。

要从s3读取内容,我建议查看boto3库或s3fs库,它是boto3的包装器,它将s3视为更像文件系统。 boto3中有多种选项可用于列出存储桶中的存储桶和文件。

来自the s3 docs

在实施方面,存储桶和对象是资源,Amazon S3为您提供API来管理它们。

如果您不知道Linux文件系统的工作原理,我建议您阅读它,或许类似this的内容会有所帮助。