2017-07-20 59 views
2

如何從r studio直接從Amazon s3讀取csv。我不能只用read_csv,如果我把,AWS s3 r studio

read_csv(url("s3a://abc/rerer.txt")) 

我得到

錯誤的URL( 「S3A://abc/rerer.txt」): URL方案不支持通過這種方法

我不想先在本地移動文件。我嘗試使用AWS s3庫中的get_bucket之類的函數,但這不是人類可讀的格式。

回答

1

我推薦CloudyR項目中的包aws.s3

安裝該軟件包:

# stable version 
install.packages("aws.s3", repos = c("cloudyr" = "http://cloudyr.github.io/drat")) 

# on windows you may need: 
install.packages("aws.s3", repos = c("cloudyr" = "http://cloudyr.github.io/drat"), INSTALL_opts = "--no-multiarch") 

一旦安裝,你可以閱讀該文件中,就像這樣:

library("aws.s3") 
r = aws.s3::get_object(bucket = "bucket",object = "object.csv") 

由於@Thomas在評論中提到,如果你知道文件類型,你可以使用read_using()函數結合freadread_csv或您通常使用的任何R函數。這樣在檢索數據後保存瞭解析步驟。

如果您的憑證已經是環境變量,則幾乎不需要設置。否則,您可以像這樣添加它們:

Sys.setenv("AWS_ACCESS_KEY_ID" = "mykey", 
      "AWS_SECRET_ACCESS_KEY" = "mysecretkey", 
      "AWS_DEFAULT_REGION" = "us-east-1", 
      "AWS_SESSION_TOKEN" = "mytoken") 

還支持多個AWS賬戶。你可以找到CloudyR項目和它的文檔在這裏:

https://github.com/cloudyr

具體來說,CloudyR的AWS S3 API客戶端的網頁是在這裏找到:

https://github.com/cloudyr/aws.s3

+0

謝謝您的答覆。我得到了這個工作。問題是你不能使用變量r。它不是以人類可讀的格式。就像我想要一個變量,當文件是S3中的文件的本地文件時,該變量相當於read_csv(文件)。 – Ark

+0

如果您知道對象是csv,那麼您可以嘗試使用'aws.s3 :: read_using()'而不是'get_object()'來使用通常用於csv的任何導入函數來讀取內容。 – Thomas

+1

@Ark我剛剛重新登錄並閱讀了兩條評論。謝謝托馬斯給他的指導,如果你不介意的話,我會把這個評論加到我的答案中。我會適當地引用你。 –