sql - 如何控制 Spark SQL 查询的输出文件数?
问题描述
从 Spark SQL SELECT 创建表,我们最终会生成太多文件。我们如何限制它们?
解决方案
从 spark 2.4 开始,您可以提示查询以控制输出:
INSERT ... SELECT /*+ COALESCE(numPartitions) */ ...
INSERT ... SELECT /*+ REPARTITION(numPartitions) */ ...
例如,这将生成 5 个文件:
CREATE TABLE business.clients
AS
SELECT /*+ REPARTITION(5) */
client_id,
country,
wallet
FROM business.users;
在 Spark 2.4 之前,一种方法是限制整个查询的分区数量:
SET spark.sql.shuffle.partitions = 5;
但这可能会影响过程性能。
推荐阅读
- angularjs - Yarn + Lerna + Angular Libs = 出版失败?
- c++ - 递归函数的 Matlab 代码生成
- javascript - Javascript 只能访问 Ajax 之后的一些新 DOM 有什么原因吗?
- asp.net-core - 在 ASP.NET Core Startup.cs 中访问当前用户
- visual-studio-code - Vscode 没有在面板中显示问题选项卡
- java - 将两个 Double 相除并将 Double 商乘以 Int 时如何将 Double 转换为 Int?
- jsonschema - JSON Schema - 在引用的 Json 中使用条件逻辑
- python - 评论没有在我的 Django Python 网站上打印出来
- c++ - 如何将 C++ 代码拆分为正文和头文件(寻找更具体的示例)
- html - 在描述 Microsoft Azure DevOps API 时提及用户