如何在Azure ML RStudio中从Azure Data Lake存储账户读取数据文件
在Azure ML RStudio中读取Azure Data Lake存储文件
既然已经通过服务主体完成认证,且能正常上传/下载文件,直接利用AzureStor包的方法即可读取ADLS中的文件,以下是具体操作:
1. 确认已连接到存储账户/文件系统
先确保你已经获取到ADLS的文件系统对象(如果之前上传下载时已经创建过,直接复用即可):
# 加载已安装的包 library(AzureAuth) library(AzureStor) # 复用之前的服务主体认证(如果会话未过期) # 若需要重新认证,使用: # token <- get_azure_token("https://storage.azure.com/", tenant="你的租户ID", app="你的服务主体ID", password="你的服务主体密钥") # 获取存储账户的端点 adls_endpoint <- storage_endpoint("https://<你的存储账户名>.dfs.core.windows.net/", token=token) # 获取目标文件系统(即ADLS容器) fs <- storage_filesystem(adls_endpoint, "<你的容器名>")
2. 读取不同类型的文件
根据你要读取的文件类型,选择对应的R函数结合AzureStor的文件读取方法:
读取CSV文件
# 先获取文件的连接对象 csv_con <- storage_download(fs, "<文件路径/文件名.csv>", dest=NULL) # 读取为数据框 csv_data <- read.csv(csv_con) # 关闭连接 close(csv_con)
读取Parquet文件(需安装arrow包)
library(arrow) parquet_con <- storage_download(fs, "<文件路径/文件名.parquet>", dest=NULL) parquet_data <- read_parquet(parquet_con) close(parquet_con)
读取Excel文件(需安装readxl包)
library(readxl) # 将文件临时保存到本地会话临时目录 temp_file <- tempfile(fileext = ".xlsx") storage_download(fs, "<文件路径/文件名.xlsx>", dest=temp_file) excel_data <- read_excel(temp_file) # 删除临时文件 file.remove(temp_file)
3. 直接读取大文件(流式处理)
如果文件过大,不想完全下载到本地,可直接流式读取:
# 以CSV为例,用readr包流式读取 library(readr) stream_con <- storage_download(fs, "<大文件路径.csv>", dest=NULL) stream_data <- read_csv(stream_con, progress = TRUE) close(stream_con)
内容的提问来源于stack exchange,提问作者alif shaikh
相关产品推荐
相关产品推荐

