合并减少 JDBC 读取并行度

2024-01-01

我杠杆Spark's JDBC能力如下:

  • Read MySQL表成DataFrame
  • 转换 them
  • Coalesce them
  • 将它们写给HDFS

在整个生命周期中DataFrame, no action执行在上面。它曾经按预期工作,但最近我遇到了问题。谢谢Spark's 惰性评估, the coalesce导致减少并行性的读操作。


所以如果我读DataFrame using DataFrameReader.jdbc(..numPartitions..) with numPartitions=42, 进而coalesce到 6partitions 在写入之前,然后读取DataFrame with a 并发性仅 6 个(仅触发 6 个查询MySQL)。我想重复一下之前它使用的 read with并行性42 并执行coalesce然后。

我最近迁移到Spark 2.3.0 on EMR 5.13,这可能与此有关吗?有解决方法吗?


由于 Spark 的惰性求值,合并导致读取操作的并行性降低。

这与懒惰无关。coalesce故意不创造分析障碍 https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.sql.Dataset@coalesce(numPartitions:Int):org.apache.spark.sql.Dataset%5BT%5D:

然而,如果你正在进行剧烈的合并,例如numPartitions = 1,这可能会导致您的计算发生在比您想要的更少的节点上(例如,在 numPartitions = 1 的情况下只有一个节点)。为了避免这种情况,您可以调用repartition。这将添加一个洗牌步骤,但意味着当前的上游分区将并行执行(无论当前分区是什么)。

所以只需遵循文档并使用repartition代替coalesce.

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

合并减少 JDBC 读取并行度 的相关文章

随机推荐

  • Font Awesome 5 图标无法与 React 一起使用(“找不到图标”错误)

    我正在尝试在我的 React 项目中使用 Font Awesome 5 Pro 我有许可证 并且我已按照API https www npmjs com package fortawesome react fontawesome尽我所能 但我
  • jQuery 获取高度和宽度

    我做了一个if函数检查宽度是否 document ready function var pic pic need to remove these in of case img element has set width and height
  • Django + PostgreSQL 连接 - 无法使用服务器端游标

    我在 PostgreSQL 中有一个存储过程 它返回一个引用游标 它的名称可以作为参数传递 Example stored procedure CREATE OR REPLACE FUNCTION example stored procedu
  • UWP 中的扩展执行

    我想为我的 UWP 应用程序使用后台任务 下面的代码是我在Windows Mobile中的后退按钮单击事件 private async void MainPage BackRequested object sender BackReques
  • 我如何使用 SVN 作为 Maven 存储库

    我正在开发具有多个依赖项的项目 大多数依赖项都可以在我们的集中 Maven 存储库中找到 我的项目包含一些仅特定于我的应用程序且在我们的 Maven 存储库中不可用的 JAR 由于某些政策 限制 我无法将该 jar 部署到我们的 Maven
  • 匹配 XPath 中的不间断空格值

    假设我有这样的 XML 结构 table tr td nbsp td tr table 我将如何指定与谓词中的节点值的比较 tr td 应该指定什么而不是 解决办法是 tr td u0160 实际的 unicode 表示方式取决于您使用的工
  • 在angularjs中为多个部分视图创建单个html视图

    我希望创建一个包含多个标签的 html 文件 这些应该作为单独的单独视图 通常保存在部分文件夹中 然后我希望在路由控制器中指定它们 现在我正在做如下 应用程序 js angular module productapp config rout
  • 如何完成这个 Google Calendar Api v3 - FreeBusy PHP - 示例?

    我想使用 google api v3 freebusy php 来查找我的三个日历的免费 freebusy 信息 但我找不到代码的正确结尾 我想访问 freebusy response 的 日历 忙 值 由于 api 参考中没有示例代码 而
  • 使用 roxygen2 时如何指定加载 S4 方法的顺序

    我已经多次遇到以下问题 假设你有两节课 classA and classB在以下文件中描述classA R the class classA This is a class A blabla section Slots describe i
  • 如何根据指针变量计算数组的大小?

    我有数组指针 内存中的数组 我可以根据数组的指针计算数组的大小吗 我实际上不知道数组在内存中的位置 我只得到指针地址 假设9001 使用该地址我必须计算数组大小 Thanks 不 您无法计算数组的大小 C 中的对象不携带类型信息 因此您必须
  • window.scrollTo 在手机中不起作用

    在我的网页的移动视图上 我可以垂直和水平方向滚动 但这始终从左上角开始 现在我想使用 window scrollTo 或类似的东西将视口设置为我的自定义位置 window scroll 似乎只适用于桌面浏览器 知道我该如何解决这个问题吗 我
  • ESLint 和 Prettier 冲突,无法为代码块禁用 Prettier

    我们的项目使用 Prettier 和 ESLint 通常它们可以很好地协同工作 但我们遇到了两者发生冲突的问题 我不知道为什么 我不知道如何修复它 并且我无法禁用该行的 prettier 因为我收到错误 我们设置的相关部分 prettier
  • Lambda 和 std::function

    我正在努力赶上 C 11 和所有出色的新功能 我有点被 lambda 困住了 这是我能够开始工作的代码 include
  • 用 javascript 替换输入

    大家好 我正在尝试将 text 输入类型替换为 password 它适用于以下代码 function replaceT obj var newO document createElement input newO setAttribute
  • 了解 C 中的函数和指针

    这是一个很简单的问题 但是下面的函数原型是什么意思呢 int square int y size t x size t 的剂量是什么意思 我知道 size t 是一种数据类型 int gt 0 但是我如何阅读它所附的 呢 它是指向 x 的内
  • R:计算指定时间范围内不同类别的数量

    这是一些虚拟数据 user id date category 27 2016 01 01 apple 27 2016 01 03 apple 27 2016 01 05 pear 27 2016 01 07 plum 27 2016 01
  • 为什么我们必须手动刷新()扩展 PersistenceContext 中的 EntityManager?

    在我们的 J2EE 应用程序中 我们使用 EJB 3 有状态 bean 来允许前端代码创建 修改和保存持久实体 通过 JPA 2 管理 它看起来像这样 LocalBean Stateful TransactionAttribute Tran
  • 为什么我的控制台应用程序在使用 Process.Start() 启动时没有图标?

    我有一个应用程序 可以将 exe 下载到临时文件夹并使用以下命令运行它System Diagnostics Process班级 到目前为止 我已经用它运行了两个不同的应用程序 一个是控制台应用程序 另一个是完整的 Windows 应用程序
  • Ninject 和信任级别中等

    我正在尝试使用 hostgator 托管我的 asp net mvc 4 Web 应用程序 目前的问题是 我使用的计划仅允许中等信任级别 我的应用程序当前安装了 Ninject MVC 包 我尝试过使用 Ninject 主页上的 NET F
  • 合并减少 JDBC 读取并行度

    我杠杆Spark s JDBC能力如下 Read MySQL表成DataFrame 转换 them Coalesce them 将它们写给HDFS 在整个生命周期中DataFrame no action执行在上面 它曾经按预期工作 但最近我