簡體   English   中英

使用R從Microsoft Azure讀取CSV文件

[英]Reading csv files from microsoft Azure using R

我最近開始處理數據塊和Azure。

我有Microsoft Azure Storage Explorer。 我在databricks上運行了一個jar程序,該程序在azure storgae資源管理器中的路徑中輸出了許多csv文件

..../myfolder/subfolder/output/old/p/ 

我通常要做的是轉到文件夾p並通過右鍵單擊p文件夾下載所有csv文件,然后單擊本地驅動器上的download以及R中的這些csv文件進行任何分析。

我的問題是,有時我的運行可能會生成超過10000個csv文件,這些文件下載到本地驅動器會花費很多時間。

我想知道是否有一個tutorial / R包可以幫助我從上面的路徑中讀取csv文件,而無需下載它們。 例如,有什么辦法可以設置

..../myfolder/subfolder/output/old/p/  

作為我的工作目錄,並以與我相同的方式處理所有文件。

編輯:路徑的完整URL看起來像這樣:

https://temp.blob.core.windows.net/myfolder/subfolder/output/old/p/

根據Azure Databricks官方文件CSV Files的說明,您可以直接讀取Azure Databricks筆記本的R中的csv文件,如“ Read CSV files notebook example ”部分中的R示例所示,如下圖所示。

在此處輸入圖片說明

或者,我使用R包reticulate和Python包azure-storage-blob從具有Azure Blob存儲的sas令牌的blob URL中直接讀取csv文件。

這是我的步驟如下。

  1. 我在Azure Databricks工作區中創建了R筆記本。
  2. 到安裝R包reticulate經由代碼install.packages("reticulate")

    在此處輸入圖片說明

  3. 要安裝Python軟件包azure-storage-blob ,如下代碼。

     %sh pip install azure-storage-blob 

    在此處輸入圖片說明

  4. 要運行Python腳本以生成容器級別的sas令牌並使用它來獲取具有sas令牌的blob網址的列表,請參見下面的代碼。

     library(reticulate) py_run_string(" from azure.storage.blob.baseblobservice import BaseBlobService from azure.storage.blob import BlobPermissions from datetime import datetime, timedelta account_name = '<your storage account name>' account_key = '<your storage account key>' container_name = '<your container name>' blob_service = BaseBlobService( account_name=account_name, account_key=account_key ) sas_token = blob_service.generate_container_shared_access_signature(container_name, permission=BlobPermissions.READ, expiry=datetime.utcnow() + timedelta(hours=1)) blob_names = blob_service.list_blob_names(container_name, prefix = 'myfolder/') blob_urls_with_sas = ['https://'+account_name+'.blob.core.windows.net/'+container_name+'/'+blob_name+'?'+sas_token for blob_name in blob_names] ") blob_urls_with_sas <- py$blob_urls_with_sas 

    在此處輸入圖片說明

  5. 現在,我可以在R中使用不同的方式來從具有sas令牌的blob URL中讀取csv文件,如下所示。

    5.1。 df <- read.csv(blob_urls_with_sas[[1]])

    在此處輸入圖片說明

    5.2。 使用R包data.table

     install.packages("data.table") library(data.table) df <- fread(blob_urls_with_sas[[1]]) 

    在此處輸入圖片說明

    5.3。 使用R包readr

     install.packages("readr") library(readr) df <- read_csv(blob_urls_with_sas[[1]]) 

    在此處輸入圖片說明

注意:有關reticulate庫,請參閱RStudio文章Calling Python from R

希望能幫助到你。


更新您的快速問題:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM