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

使用pyspark/python列出AWS S3目录中的文件,python,amazon-s3,pyspark,Python,Amazon S3,Pyspark,所以,我对AWS S3、pyspark和linux是新手。我不知道从哪里开始。我的问题是: 在linux中,我可以发出以下命令,并可以查看文件夹中的文件: aws s3 ls 's3://datastore/L2/parquet' 用python做类似的事情是行不通的 import os os.listdir('s3://datastore/L2/parquet') 它给出了错误: Traceback (most recent call last): File "<stdin>

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

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

aws s3 ls 's3://datastore/L2/parquet'
用python做类似的事情是行不通的

import os
os.listdir('s3://datastore/L2/parquet')
它给出了错误:

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

为什么它在
SQLContext
中工作而在
os.listdir
中不工作?我从哪里开始澄清我的困惑?除了“获得cs学士学位”之外的任何回复都会有所帮助。

因此,AWS s3与您的操作系统的文件系统不同。AWS
s3ls
命令和pyspark
SQLContext.read
命令所做的事情与
os.listdir
命令不同,后者不知道如何从s3读取内容

要阅读s3中的内容,我建议查看boto3库或s3fs库,它是boto3的包装器,将s3更像是一个文件系统。boto3中有多种选项用于列出bucket和bucket中的文件

发件人:

在实现方面,bucket和对象是资源,AmazonS3提供API供您管理它们

如果您不知道Linux文件系统是如何工作的,我建议您阅读一下,也许类似的内容会有所帮助

from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)
df = sqlContext.read.parquet('s3://datastore/L2/parquet')