You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用AzureStor R库操作ADLSgen2:指定目录列取与CSV读取

解决ADLS Gen2只读权限下的RStudio操作问题

针对你仅通过Azure AD组ACL拥有指定目录只读权限的场景,以下是在RStudio中完成两项操作的正确实现方式:

前置准备

首先安装并加载azurestor包(专门用于Azure存储操作,原生支持Azure AD身份认证):

install.packages("azurestor")
library(azurestor)

(i) 列出指定目录内容

通过设备码认证基于你的Azure AD身份完成登录(无需存储账户密钥,自动继承所属AD组的权限),随后访问目标容器与目录:

# 替换为你的存储账户名称
storage_acc <- storage_account("your-storage-account-name", auth = "device_code")

# 替换为容器名称和目标目录路径(结尾加斜杠限定访问范围)
target_container <- storage_container(storage_acc, "your-container-name")
dir_items <- list_storage_files(target_container, prefix = "path/to/your/target-dir/")

# 输出目录内容
print(dir_items)

说明:

  • 执行storage_account时,终端会弹出验证链接和验证码,打开链接登录你的Azure AD账号即可完成认证。
  • prefix参数严格指定目标目录,避免访问无权限路径引发报错。
  • 如需递归列出子目录内容,可添加recursive = TRUE参数。

(ii) 读取CSV文件为DataFrame

基于已建立的认证连接,直接读取存储中的CSV文件,无需下载到本地:

读取单个CSV

# 从目录内容中筛选CSV文件(示例取第一个匹配项)
target_csv <- dir_items$name[grepl("\\.csv$", dir_items$name)][1]

# 直接读取为DataFrame
df <- storage_read_csv(target_container, target_csv)

批量读取并合并所有CSV

如果目录下有多个CSV需要合并,可结合dplyr和purrr实现:

library(dplyr)
library(purrr)

csv_list <- dir_items$name[grepl("\\.csv$", dir_items$name)]
combined_df <- map_dfr(csv_list, ~ storage_read_csv(target_container, .x))

大文件高效读取

若CSV文件较大,推荐使用vroom包加速读取,需先生成临时SAS URL(基于你的权限自动生成):

install.packages("vroom")
library(vroom)

# 生成有效期1小时的只读SAS URL
csv_sas <- generate_sas(target_container, target_csv, permissions = "r", expiry = Sys.time() + 3600)
large_df <- vroom(csv_sas$url)

内容的提问来源于stack exchange,提问作者el_pazzu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 03:51:14