使用 R 从 Microsoft Azure 读取 csv 文件
Reading csv files from microsoft Azure using R
我最近开始使用数据块和 Azure。
我有 Microsoft Azure 存储资源管理器。我 运行 数据块上的 jar 程序
它在路径
中的 azure storgae 资源管理器中输出许多 csv 文件
..../myfolder/subfolder/output/old/p/
我通常做的事情是进入文件夹 p
并下载所有 csv 文件
右键单击 p
文件夹,然后单击本地驱动器上的 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/
根据官方文档CSV Files
of Azure Databricks, you can directly read a csv file in R of a notebook of Azure Databricks as the R example of the section Read CSV files notebook example
所说,如下图
或者,我使用 R 包 reticulate
和 Python 包 azure-storage-blob
直接从带有 Azure Blob 存储 sas 令牌的 blob url 读取 csv 文件。
下面是我的步骤。
- 我在 Azure Databricks 工作区中创建了一个 R 笔记本。
通过代码 install.packages("reticulate")
.
安装 R 包 reticulate
安装 Python 包 azure-storage-blob
如下代码。
%sh
pip install azure-storage-blob
到运行Python脚本生成容器级别的sas令牌并使用它来获取带有sas令牌的blob列表url,请看下面的代码。
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
现在,我可以在 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
。
希望对您有所帮助。
更新您的快速问题:
我最近开始使用数据块和 Azure。
我有 Microsoft Azure 存储资源管理器。我 运行 数据块上的 jar 程序 它在路径
中的 azure storgae 资源管理器中输出许多 csv 文件..../myfolder/subfolder/output/old/p/
我通常做的事情是进入文件夹 p
并下载所有 csv 文件
右键单击 p
文件夹,然后单击本地驱动器上的 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/
根据官方文档CSV Files
of Azure Databricks, you can directly read a csv file in R of a notebook of Azure Databricks as the R example of the section Read CSV files notebook example
所说,如下图
或者,我使用 R 包 reticulate
和 Python 包 azure-storage-blob
直接从带有 Azure Blob 存储 sas 令牌的 blob url 读取 csv 文件。
下面是我的步骤。
- 我在 Azure Databricks 工作区中创建了一个 R 笔记本。
通过代码
安装 R 包install.packages("reticulate")
.reticulate
安装 Python 包
azure-storage-blob
如下代码。%sh pip install azure-storage-blob
到运行Python脚本生成容器级别的sas令牌并使用它来获取带有sas令牌的blob列表url,请看下面的代码。
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
现在,我可以在 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
。
希望对您有所帮助。
更新您的快速问题: