【发布时间】:2020-11-06 04:09:09
【问题描述】:
我正在使用 R 处理大型数据集(最大数据帧 30.000.000 x 120)。这些文件作为 parquet 文件存储在 Azure Datalake Storage 中,我们需要每天查询这些文件并将它们还原到本地 SQL 数据库中。无需将数据加载到内存即可读取 Parquet 文件,这很方便。但是,从 parqueet 文件创建 SQL 表更具挑战性,因为我不想将数据加载到内存中。
这是我使用的代码。不幸的是,这不是一个完美的表示,因为它需要存在 SQL 数据库才能工作。
# load packages
library(tidyverse)
library(arrow)
library(sparklyr)
library(DBI)
# Create test data
test <- data.frame(matrix(rnorm(20), nrow=10))
# Save as parquet file
write_parquet(test2, tempfile(fileext = ".parquet"))
# Load main table
sc <- spark_connect(master = "local", spark_home = spark_home_dir())
test <- spark_read_parquet(sc, name = "test_main", path = "/tmp/RtmpeJBgyB/file2b5f4764e153.parquet", memory = FALSE, overwrite = TRUE)
# Save into SQL table
DBI::dbWriteTable(conn = connection,
name = DBI::Id(schema = "schema", table = "table"),
value = test)
是否可以在不将 parquet 文件加载到内存的情况下编写 SQL 表?
【问题讨论】:
标签: sql r sql-server apache-spark parquet