2017-02-09 114 views
0

嗨,我有一個問題,從S3讀取文件與DataFrameReader 我能夠讀取完全相同的文件,當它在本地 ,但是當它存儲在s3我無法讀取它,這裏是我的代碼用DataFrameReader從S3讀取文件

private SparkSession getSparkSession() { 
    return sparkSessionService.getTransformedCsvSparkSession(); 
} 

public void processFile(StructType structType, String srcFile, String targetFile) { 
    //"s3n://yourAccessKey:[email protected]/path/ 
    String spark = new String("s3n://TTTTTTTT:[email protected]/bucket-qa1/test/123456785_Ads_mockup_.csv"); 
    Dataset<Row> dfSpark = getSparkSession().read().format("csv").schema(structType).option("header", srcIncludeHeader).load(spark); 
    dfSpark.show(); 

一個片段,但我得到這個錯誤:

java.lang.IllegalArgumentException: Invalid hostname in URI s3n://..... 

我使用DataBrics

如何「告訴」DataFrameReader從AWS S3讀取?

+1

上斜線有沒有在您的AWS「/」訪問密鑰或祕密密鑰?這會混淆火花。您可以從spark上下文獲取hadoop配置並在那裏設置鍵。確切的選項名稱取決於您使用的火花版本。 –

+0

不,沒有,我如何「拆分」桶/路徑/實際文件名? –

+0

正在正確分割存儲桶,路徑和文件名。 –

回答

1

不應該有水桶名前斜線,它的確定,使文件路徑