apache-spark - 触发多个 CSV 读取?
问题描述
在我的 spark 应用程序中,我曾经读过一个包含许多 CSV 的目录。但是,在 DAG 中,我看到了多个 CSV 读取。
- 为什么 spark 多次读取 CSV 或者它不是真实的表示;实际上 Spark 会读取它们一次。
解决方案
如果 DataFrame 未缓存,Spark 将多次读取它们。
val df1 = spark.read.csv("path")
val df2_result = df1.filter(.......).save(......)
val df3_result = df1.map(....).groupBy(...).save(......)
这里 df2_result 和 df3_result 都将导致 df1 从 csv 文件重建。为避免这种情况,您可以像这样缓存。DF1 将从 csv 构建一次,第二次将不会从文件构建。
val df1 = spark.read.csv("path")
df1.cache()
val df2_result = df1.filter(.......).save(......)
val df3_result = df1.map(....).groupBy(...).save(......)
推荐阅读
- powershell - Powershell:捕获 WebRequest 响应与本机响应不同
- python - 在熊猫中使用滚动窗口计算非零数的有效方法?
- python - 我正在尝试使用 pip 安装 nltk,但不一定会出错,但我也不确定这意味着什么
- arrays - 字符串数组仅存储 C 中的最后一项
- ruby-on-rails - 如何从散列数组中创建简单的表单选择输入
- python - 如何使用自定义字母集解码 base64 字符串?
- c - printf 仅从 c 中的 scanf 输入中打印一个单词
- hibernate - 超过两个实体的休眠复杂查询
- python - 泊松回归中的多项式回归
- azure-devops - Azure Devops - 运行删除时清理 Docker 存储库