如何在 Spark 中以小块形式迭代大型 Cassandra 表

2024-01-12

在我的测试环境中,我有 1 个 Cassandra 节点和 3 个 Spark 节点。我想迭代大约有 200k 行的明显大表,每行大约占用 20-50KB。

CREATE TABLE foo (
  uid timeuuid,
  events blob,
  PRIMARY KEY ((uid))
) 

这是在 Spark 集群中执行的 scala 代码

val rdd = sc.cassandraTable("test", "foo")

// This pulls records in memory, taking ~6.3GB
var count = rdd.select("events").count()  

// Fails nearly immediately with 
// NoHostAvailableException: All host(s) tried for query failed [...]
var events = rdd.select("events").collect()

Cassandra 2.0.9、Spark:1.2.1、Spark-cassandra-connector-1.2.0-alpha2

我试着只跑collect, 没有count- 在这种情况下,它很快就会失败NoHostAvailableException.

问题:一次迭代大表读取和处理小批量行的正确方法是什么?


Cassandra Spark Connector 中有 2 个设置用于调整块大小(将它们放在 SparkConf 对象中):

  • Spark.cassandra.input.split.size:每个 Spark 分区的行数(默认 100000)
  • Spark.cassandra.input.page.row.size:每个获取页面的行数(即网络往返)(默认1000)

此外,您不应该使用collect在您的示例中执行操作,因为它将获取驱动程序应用程序内存中的所有行,并可能引发内存不足异常。您可以使用collect仅当您确定它会产生少量行时才采取行动。这count动作不同,它只产生一个整数。因此,我建议您像以前一样从 Cassandra 加载数据,处理它,然后存储结果(在 Cassandra、HDFS 等中)。

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

如何在 Spark 中以小块形式迭代大型 Cassandra 表 的相关文章

随机推荐

  • 如何转到 Chrome 开发者工具中的特定文件?

    我正在开发一个采用重型前端方法的 Web 应用程序 通过使用 Dojo 和 AMD 方式 我目前的测试屏幕可以轻松加载一百多个不同的 javascript 文件 当我想要调试任何特定问题 或者验证是否看到特定文件的旧版本时 我发现很难在 C
  • 使用 loginPopup 时 Microsoft 身份验证反应“hash_empty_error”

    我无法理解在尝试使用 Micrsoft Authentication 库 for React PWA 对用户进行身份验证时遇到的错误 我需要帮助理解为什么尝试使用 loginPopup 方法登录用户时失败 在某些情况下 身份验证按预期工作
  • WordPress 小部件更新需要标签的项目的实例

    最近 我意识到在开发主题中的侧边栏时 我没有充分利用 WordPress 中的小部件 因此我花了几天时间研究如何正确开发它们 在查看了大量教程后 我发现其中一些关于自定义构建小部件的教程已经过时了 我确实看到了应该在哪里使用该构造 func
  • 如何在 Swift 中反转数组?

    如何以相反的顺序打印以下数组 var toDoListReverse Take out garbage Pay bills Cross off finished items 这是 swift 3 的代码 let array IOS A IO
  • Android toast.makeText 上下文错误

    我在位置侦听器内调用 toast Maketext 时遇到问题 上下文不可用 我做错了什么 private LocationListener ll new LocationListener public void onLocationCha
  • 用于显示 PHP 警告和错误的 Sublime Text 扩展

    我最近安装了 Sublime Text 2 还在适应中 我已经安装了 Package Control 和大部分 PHP 扩展 我希望有一个能够强调语法错误的工具 就像 Netbeans 那样 有没有一个包可以做到这一点 Use Sublim
  • Macports 选择默认的 Python 解释器来执行脚本? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 I used python select 它似乎没有改变执行脚本的默认 python 例如django admin py runserver 前面没有
  • MSDTC - 需要多少个端口

    我有一个使用 MSDTC 的相当大的应用程序 我应该打开多少个端口 有什么办法可以确定吗 EDIT I know what我需要打开的端口 我不知道how many I need 当我们必须进行这种调试时 这篇文章特别有用 如何解决 MS
  • Spring MockRestServiceServer 处理多个异步请求

    我有一个协调器 Spring Boot 服务 它向外部服务发出几个异步休息请求 我想模拟这些服务的响应 我的代码是 mockServer expect requestTo http localhost retrieveBook book1
  • 如何使用简单注入器注册 Windows 窗体

    背景 我正在构建一个 winforms 应用程序 其中使用 IoC 容器 SimpleInjector 来注册我的类型 在我的应用程序中 大多数屏幕 即表单 在任何给定时间都只有一个实例 Problem 对于在任何给定时间只需要一个实例的表
  • 想要在jquery中旋转元素

    我在尝试着旋转一个元素 任何元素 div p handle handle gt div 我放置在元素的top left角落 现在我的问题是该元素没有完全旋转到 360 度 任何人都可以帮忙 elementid live mouseover
  • Word 2010 VBA - 操作编号列表

    我正在尝试获取在 Outlook 中创建的编号列表 并根据顶级列表项对其进行操作 不幸的是 我发现操作列表的唯一方法是通过 ListParagraph 类型 它平等地分解所有列表项 包括子项 而不是对列表中的每个级别具有不同的访问权限 有没
  • 带 rollup 和 redux 的 lit-element:未定义流程

    我正在尝试将基于 lit element 的应用程序中的状态管理从简单的全局变量切换为 redux 按照 redux 教程 我安装了 redux 工具包并创建了一个简单的减速器和存储 使用汇总构建应用程序成功 但当我在 Chrome 中加载
  • Java机器人鼠标移动:设置速度?

    Java Robot 类允许人们移动鼠标 就像移动实际的物理鼠标一样 然而 如何以一种人性化 而非即时 的方式将鼠标从 Point1 移动到 Point2 又名 如何设置移动速度 如果Robot类不可能达到这样的速度 那么如果鼠标只能瞬时移
  • 如何解决 FATAL:超出非超级用户的连接限制

    我写了一个用于批量插入的java代码 我使用复制命令为不同的表导入和创建不同的连接对象 但在执行时 程序抛出以下错误 FATAL connection limit exceeded for non superusers 您已超出 Postg
  • 如何防止弹出基本身份验证表单

    我有一个 Java 应用程序 JSF 它使用 javascript 连接到需要基本身份验证的网站 我想要配合的事情与我在弹出表单中输入用户名和密码时发生的事情完全相同 我已经尝试了许多关于该主题的不同方法 但没有一个有效 奇怪的是 ajax
  • 以编程方式单击 jetpack compose 中的文本字段

    有没有一种方法可以以编程方式单击文本字段 以便当我的搜索屏幕弹出时 它会自动单击文本字段并弹出键盘 或者 有没有办法知道文本字段的触摸事件 With 1 0 x您可以将焦点放在该组件上 就像是 var text by remember mu
  • 使列等高 - 通过嵌套

    我的设计使用两个外部列 并在标题部分的外部列之一和下面的另外两列中 如下所示 header out1 out2 footer
  • MockMVC 对异步服务执行后期测试

    我需要测试调用异步服务的控制器 控制器代码 RequestMapping value path method RequestMethod POST produces MediaType APPLICATION JSON VALUE Resp
  • 如何在 Spark 中以小块形式迭代大型 Cassandra 表

    在我的测试环境中 我有 1 个 Cassandra 节点和 3 个 Spark 节点 我想迭代大约有 200k 行的明显大表 每行大约占用 20 50KB CREATE TABLE foo uid timeuuid events blob