我正在使用dplyr在我的数据框上创建三个新变量。数据帧为 84,253 obs。164 个变量。下面是我的代码。
# ptm <- proc.time()
D04_Base2 <- D04_Base %>%
mutate(
birthyr = year(as.Date(BIRTHDT,"%m/%d/%Y")),
age = (snapshotDt - as.Date(BIRTHDT,"%m/%d/%Y")) / 365.25,
age = ifelse(age > 100, NA, age)
)
# proc.time() - ptm
user system elapsed
12.34 0.03 12.42
Run Code Online (Sandbox Code Playgroud)
但是,我想知道我的代码是否存在明显的问题,因为它运行的时间比我预期的要长得多,或者是其他问题。如上所示,代码完成大约需要 12 秒。
我在 S3 中存储 400,000 个镶木地板文件,这些文件根据唯一 ID(例如 412812)进行分区。这些文件的数据大小从 25kb 到 250kb 不等。然后我想使用 Athena 查询数据。就像这样,
Select *
From Table
where id in (412812, 412813, 412814)
Run Code Online (Sandbox Code Playgroud)
该查询比预期慢得多。我希望能够搜索任何一组 ID 并获得快速响应。我相信它很慢是因为 Athena 必须搜索整个胶水目录以查找正确的文件(即对文件进行完整扫描)。
下面的查询速度非常快。不到一秒钟。
Select *
From Table
where id = 412812
Run Code Online (Sandbox Code Playgroud)
表上启用了partition.filtering。我尝试向表中添加与分区相同的索引,但它没有加快任何速度。
我的方法或表配置是否有问题,可以使此过程更快?
amazon-s3 amazon-web-services parquet amazon-athena aws-glue