我最近开始使用 databricks 和 azure。
我有微软天蓝色存储资源管理器。我在 databricks 上运行了一个 jar 程序
它在路径中的 azure storgae explorer 中输出许多 csv 文件
..../myfolder/subfolder/output/old/p/
我通常做的事情是去文件夹p
并下载所有 csv 文件
通过右键单击p
文件夹并单击download
在我的本地驱动器上
并在 R 中使用这些 csv 文件进行任何分析。
我的问题是,有时我的运行可能会生成超过 10000 个 csv 文件
下载到本地驱动器需要很多时间。
我想知道是否有教程/R 包可以帮助我阅读
来自上述路径的 csv 文件,无需下载。例如
有什么办法可以设置吗
..../myfolder/subfolder/output/old/p/
作为我的工作目录并以与我相同的方式处理所有文件。
编辑:
路径的完整 url 看起来像这样:
https://temp.blob.core.windows.net/myfolder/subfolder/output/old/p/
根据官方文件CSV Files https://docs.azuredatabricks.net/spark/latest/data-sources/read-csv.htmlAzure Databricks 的,您可以直接读取 Azure Databricks 笔记本的 R 中的 csv 文件作为本节的 R 示例Read CSV files notebook example https://docs.azuredatabricks.net/spark/latest/data-sources/read-csv.html#read-csv-files说道,如下图。
或者,我使用 R 包reticulate
和Python包azure-storage-blob
使用 Azure Blob 存储的 sas 令牌直接从 blob url 读取 csv 文件。
这是我的步骤如下。
- 我在 Azure Databricks 工作区中创建了一个 R 笔记本。
-
安装 R 包reticulate
通过代码install.packages("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 https://rstudio.github.io/reticulate/articles/calling_python.html.
希望能帮助到你。
更新您的快速问题:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)