apache-spark - 在数据块中加载增量表特定分区的最佳实践是什么?
问题描述
我想知道加载增量表特定分区的最佳方法是什么?选项 2 是在过滤之前加载所有表吗?
选项1 :
df = spark.read.format("delta").option('basePath','/mnt/raw/mytable/')\
.load('/mnt/raw/mytable/ingestdate=20210703')
(这里需要 basePath 选项吗?)
选项 2:
df = spark.read.format("delta").load('/mnt/raw/mytable/')
df = df.filter(col('ingestdate')=='20210703')
提前谢谢了 !
解决方案
在第二个选项中,spark 仅加载已在过滤条件中提及的相关分区,内部 sparkpartition pruning
仅加载源表中的相关数据。
而在第一个选项中,您直接指示 spark 仅加载定义的各个分区。
因此,在这两种情况下,您最终都将仅加载各自的分区数据。
推荐阅读
- codeigniter - Codeigniter 模型功能和查询不工作
- javascript - PHP DOM 生成的 Ajax 新鲜输入字段
- node.js - 如何在 pm2 上运行 node.js 应用程序
- javascript - 更新 html 文件
- javascript - 拖放后使用新列表更新数据库
- scenekit - 如何将系统时间传递给 Metal 片段函数?
- hive - 可以在 Hive 中创建子架构/文件夹吗?
- django - 尝试使用 {% include %} 在另一个应用程序的模板中包含表单,但得到“TemplateDoesNotExist”
- string - 获取句子中单词的第一个字母
- python - django-tables2 自定义表格可视化