2017-03-29 58 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這樣的東西會有幫助。