![](/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.