2017-03-29 59 views
1

因此,我不熟悉AWS S3和pyspark和linux。我不知道从哪里开始。这里是我的问题:使用pyspark/python在AWS S3上的目录中列出文件

在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' 

然而,pysparkSQLContext.read.parquet理解的IT得好:

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

任何理由为什么它工作在SQLContextos.listdir不起作用?我在哪里可以开始清除我的困惑?除了“获得cs学士学位”之外的任何答复都会有所帮助。

回答

1

因此,AWS s3与您的操作系统的文件系统不一样。 AWS s3 ls命令和pyspark SQLContext.read命令与os.listdir命令不同,它不知道如何从s3读取事情。

the s3 docs

在实施,水桶和对象方面是资源和Amazon S3提供API让你管理他们。

如果你不知道Linux文件系统是如何工作的,我建议你阅读一下,或许像this这样的东西会有帮助。