![](/img/trans.png)
[英]How do I convert a dataframe to parquet file and upload on Azure Blob storage in R? Any working examples?
[英]How to connect to parquet files in Azure Blob Storage with arrow::open_dataset?
我对其他方式持开放态度。 这是我的限制:
这是我能够做的:
arrow::open_dataset()
连接到本地镶木地板目录: ds <- arrow::open_dataset(filepath, partitioning = "product")
AzureStor
package 连接到我的 blob 容器,从中查看和下载。我可以通过这种方式下载单个镶木地板文件并将其转换为数据框:blob <- AzureStor::storage_endpoint("{URL}", key="{KEY}")
cont <- AzureStor::storage_container(blob, "{CONTAINER-NAME}")
parq <- AzureStor::storage_download(cont, src = "{FILE-PATH}", dest = NULL)
df <- arrow::read_parquet(parq)
我一直无法弄清楚的是如何使用arrow::open_dataset()
来引用{FILE-PATH}
的父目录,其中我有所有镶木地板文件,使用我正在连接的容器使用AzureStor
创建。 arrow::open_dataset()
只接受字符向量作为“sources”参数。 如果我只是给它 URL 路径,我不会传递任何类型的凭据来访问容器。
不幸的是,您今天可能无法仅从 R 执行此操作。
Arrow-R 基于 Arrow-C++,而 Arrow-C++ 还没有针对 Azure 的文件系统实现。 有 JIRA 票ARROW-9611 , ARROW-2034用于创建一个,但这些票目前尚未处理。
在 python 中,可以使用FSspec 适配器纯粹在 python 中创建文件系统。 由于 Azure Blob 存储有 python SDK,因此应该可以在 Z23EEEB4347BDD26BDD6DFC 中执行您今天想要的操作。
大概可以为 R 创建类似的东西,但您仍然需要创建与 fsspec 适配器等效的 R 并且这将涉及一些 C++ 代码。
如果您使用 Azure Synapse,那么您可以使用 odbc 连接到您的数据,就好像它是 SQL 服务器数据库一样,它还支持分区和其他文件类型。 据我所知,定价大约是 5 美元/月固定加上 5 美元/TB 查询。
查询数据看起来像这样......
library(odbc)
syncon <- dbConnect(odbc(),
Driver = "SQL Server Native Client 11.0",
Server = "yourname-ondemand.sql.azuresynapse.net",
Database = "dbname",
UID = "sqladminuser",
PWD = rstudioapi::askForPassword("Database password"),
Port = 1433)
somedata <- dbGetQuery(syncon, r"---{SELECT top 100
result.filepath(1) as year,
result.filepath(2) as month,
*
FROM
OPENROWSET(
BULK 'blobcontainer/directory/*/*/*.parquet',
DATA_SOURCE='blobname',
FORMAT = 'parquet'
) as [result]
order by node, pricedate, hour}---")
filepath
关键字指的是BULK
路径中的目录名称。
这是 MS 网站https://learn.microsoft.com/en-us/azure/synapse-analytics/sql/query-specific-files
您还可以制作视图,以便喜欢 SQL 但不喜欢 parquet 文件的人可以查询视图,而无需了解底层数据结构,它看起来就像一个 SQL 服务器数据库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.