【发布时间】:2019-09-05 07:30:58
【问题描述】:
我正在从 s3 存储桶中读取大量文件。
读完这些文件后,我想对数据框进行过滤操作。
但是当执行过滤操作时,数据会再次从 s3 存储桶中下载。如何避免数据框重新加载?
我已尝试在过滤操作之前缓存和/或持久化数据帧。但是,仍然以某种方式再次从 s3 存储桶中提取数据。
var df = spark.read.json("path_to_s3_bucket/*.json")
df.persist(StorageLevel.MEMORY_AND_DISK_SER_2)
df = df.filter("filter condition").sort(col("columnName").asc)
如果数据帧被缓存,则不应再次从 s3 重新加载。
【问题讨论】:
-
你能告诉我们
explain的计划吗?你怎么确定这又是从存储桶中读取的? -
如果担心重新阅读,请对本地进行 distcp 并从本地本身读取
标签: scala apache-spark apache-spark-sql