JDBC 到 Spark Dataframe - 如何确保均匀分区?

2023-11-22

我是 Spark 新手,正在致力于通过 JDBC 从 Postgres 数据库表创建 DataFrame,使用spark.read.jdbc.

我对分区选项有点困惑,特别是分区列, 下界, 上限, and 分区数.


  • 文档似乎表明这些字段是可选的。 如果我不提供它们会怎样?
  • Spark 如何知道如何对查询进行分区?那会有多高效呢?
  • 如果我指定这些选项,如何确保分区大小大致均匀,即使分区列分布不均匀?

假设我将有 20 个执行程序,因此我将 numPartitions 设置为 20。
我的partitionColumn是一个自动递增的ID字段,假设值范围从1到2,000,000
但是,由于用户选择处理一些非常旧的数据以及一些非常新的数据,中间没有任何数据,因此大多数数据的 ID 值要么低于 100,000,要么超过 1,900,000。

  • 我的第 1 名和第 20 名执行者会承担大部分工作,而其他 18 名执行者则大部分闲置吗?

  • 如果是这样,有办法防止这种情况发生吗?


我找到了一种手动指定分区边界的方法,方法是使用带有谓词参数的 jdbc 构造函数.

它允许您显式指定要插入到每个分区的“where”子句中的各个条件,从而允许您准确指定每个分区将接收的行范围。因此,如果您没有用于自动分区的均匀分布列,您可以自定义自己的分区策略。

如何使用它的示例可以在接受的答案中找到这个问题.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JDBC 到 Spark Dataframe - 如何确保均匀分区? 的相关文章

随机推荐

  • 文件夹中的文件以绿色突出显示,旁边有数字 1。这意味着什么?

    Yesterday a few files in one of my folders git repository have turned green and have a number next to them like so Can a
  • 以类型安全的方式处理 PropertyChanged

    有很多文章介绍如何使用反射和 LINQ 以类型安全的方式引发 PropertyChanged 事件 而不使用字符串 但有什么办法可以consumePropertyChanged 事件以类型安全的方式发生 目前 我正在这样做 void mod
  • 有没有办法从某种类型的 JSON.NET JObject 中删除节点?

    我有一个从 API 返回的 JSON 对象 其中一些节点是数组 有什么方法可以让我完全根据 类型 将它们从对象中提取出来吗 例如 result field1 value1 field2 val2 val3 field3 val4 field
  • laravel 自动删除 php artisanserve 上的 server.php

    我在 Windows 环境中使用 laravel 5 6 使用 php 7 2 与 xampp 一起安装 安装 laravel 后 php artisanserve 命令可以工作 但会自动删除 server php 文件 只是为了避免这个问
  • 如何设置 openai-gym 环境以特定状态而不是“env.reset()”开始?

    今天 当我尝试在openai gym环境下实现一个rl agent时 我发现一个问题 似乎所有的agent都是从最初始的状态开始训练的 env reset i e import gym env gym make CartPole v0 in
  • 我需要一些有关 HTML 中嵌套列表的指导 我有一个布局 我想像下面这样构建 嵌套一个未被包裹的元素是一件可怕的事情吗 li 我相当确定它不符合标准 但不知道它会产生什么不良影响 ul li h1 header 1 h1 li li ul
  • Mongoose 将存储的 UTC 日期转换为本地时间?

    我想知道这是否正常 或者我是否在架构设置或查询过程中遗漏了某些内容 我的应用程序和猫鼬在 mongodb 中正确存储了 UTC 日期 通过 mongo shell 查看文档可以确认这一点 当我通过 mongoose 从 mongodb 检索
  • 在 SQL Server 中将 varchar 转换为 uniqueidentifier

    我无法控制其架构的表包含定义为 varchar 50 的列 该列以 a89b1acd95016ae6b9c8aabb07da2010 格式存储唯一标识符 无连字符 我想将它们转换为 SQL 中的唯一标识符 以便传递给 Net GUID 但是
  • 在 Spring MVC 中从控制器查找区域设置

    我正在使用 Spring 3 0 如何在基于注释的控制器中找到由 LocaleResolver 设置的当前区域设置 Thanks 您可以声明类型的参数Locale在你的控制器方法中 RequestMapping public ModelAn
  • 使用 Java API 将 Parquet 格式写入 HDFS,而不使用 Avro 和 MR

    简单的写法是什么实木复合地板格式 to HDFS 使用Java API 通过直接创建 Parquet SchemaPojo 的 不使用avro and MR 我发现的示例已经过时 并且使用已弃用的方法 还使用 Avro spark 或 MR
  • 应用程序池和工作进程线程之间有什么关系?

    我正在对 ASP NET 应用程序中的重新启动进行故障排除 该应用程序每天重新启动大约 20 次 我们强烈怀疑应用程序的一部分 因为当这一特定功能投入生产时 重启就开始了 我已经使用 log4net 库向这些页面添加了一些日志记录 但我在解
  • 将文本附加到 RichTextBox 的最快方法?

    我有一个带有 RichTextBox 控件的应用程序 其中的过程几乎总是添加文本 RichTextBox1 Text vbNewLine Title AlbumName RichTextBox1 Text vbNewLine Genre A
  • 序数编码或 One-Hot 编码

    如果我们不确定分类特征的性质 例如它们是名义特征还是序数特征 我们应该使用哪种编码 序数编码还是单热编码 关于这个主题有明确的规则吗 我看到很多人在没有方向的分类数据上使用序数编码 假设有一个频数表 some data some col v
  • Swift 中开关盒的详尽条件

    苹果文档 says 每个 switch 语句都必须是详尽的 也就是说 每一个可能的 正在考虑的类型的值必须与其中之一匹配 切换案例 所以在新的 Xcode 中我放置了这样的代码 println UInt16 min Output 0 pri
  • C# 通过 T 的成员对列表 进行二进制搜索

    我有一个基类Event with a DateTime member TimeStamp 许多其他事件类将从中派生 我希望能够快速搜索事件列表 因此我想使用二分搜索 列表数据按时间戳排序 但同时发生的事件可能存在重复的时间戳 所以我开始写这
  • Node.js MySQL 模块 - 抛出错误; // 重新抛出非 MySQL 错误;

    今天我尝试了来自 w3schools 的 node js mysql 片段 var mysql require mysql var con mysql createConnection host localhost user roots W
  • 如何在 Coq 中使用归纳类型来处理案例

    我想使用destruct通过案例来证明陈述的策略 我在网上读了几个例子 但我很困惑 有人可以更好地解释一下吗 这是一个小例子 还有其他方法可以解决它 但尝试使用destruct Inductive three zero one two Le
  • Visual Studio C++ 是否可以在不链接的情况下编译对象

    我正在运行 VS 2010 SP1 并且有一个每周运行一次的特殊分析配置 因为构建服务器需要很长时间来分析所有内容 我希望此配置无需链接即可运行 如果分析通过了项目中的所有代码 那么我希望构建继续进行下一个项目而不链接 我看不出有什么方法可
  • Python套接字接受块-防止应用程序退出

    我编写了一个非常简单的 python 类 它等待套接字上的连接 目的是将此类粘贴到现有应用程序中 并将数据异步发送到连接的客户端 问题是 当等待 socket accept 时 我无法通过按 ctrl c 来结束我的应用程序 我也无法检测到
  • JDBC 到 Spark Dataframe - 如何确保均匀分区?

    我是 Spark 新手 正在致力于通过 JDBC 从 Postgres 数据库表创建 DataFrame 使用spark read jdbc 我对分区选项有点困惑 特别是分区列 下界 上限 and 分区数 文档似乎表明这些字段是可选的 如果