apache-spark - Spark 上的 count() 是否意味着所有数据都已在内存中可供处理?
问题描述
我的数据场景如下:
- 使用 PySpark 使用 JDBC 从数据库中读取数据框中的数据
- 我进行 count() 调用以查看记录数并“知道”数据加载何时准备就绪。我这样做是为了了解潜在的瓶颈。
- 写入 s3 中的文件(在同一区域)
所以,我的目标是准确知道何时加载所有数据库/表数据,这样我就可以推断当工作变慢时读取或写入数据是否存在问题。在我的第一次尝试中,我可以非常快速地获得记录数(在作业运行 2 分钟后),但我的猜测是执行 count() 并不意味着数据已全部加载(在内存中)。
解决方案
当您什么都count()
没有加载时,这是一个将触发数据处理的操作。
如果您有这样一个简单的逻辑计划:
spark.read(..)
.map(..)
.filter(..)
...
.count()
一旦你调用一个动作,数据库就会被加载(在这个例子中count
)
推荐阅读
- ipfs - 如何在 ipfs 中创建文件夹和上传图片
- json - Swift JSONEncoder 数字舍入
- ruby-on-rails - Errno::EACCES 删除文件时(在 Windows 10 上)
- python - 如何在Python的循环中将不带单/双引号的字符串传递给另一个函数
- php - Zingchart 没有从 MariaDB 中提取数据
- php - 如何在 woocommerce 中更改 woocommerce-terms-and-conditions-checkbox-text div 的文本?
- ios - 将粒子从 Maya 导出到 SceneKit iOS
- python - SyntaxError 停止在脚本中验证 python 版本
- sql - 从 Athena 查询中的字典字符串中获取值
- idris - 为什么我不能使用匹配变量而不是变量值?