如何确定对象是否是 PySpark 中的有效键值对

2023-11-29

  1. 如果我有一个 rdd,我如何理解数据在 key:value 中 格式?有没有办法找到相同的东西 - 就像 type(object) 告诉我对象的类型。我试过print type(rdd.take(1)),但它只是说<type 'list'>.
  2. 假设我有这样的数据(x,1),(x,2),(y,1),(y,3)我用groupByKey并得到了(x,(1,2)),(y,(1,3))。有没有办法定义(1,2) and (1,3)作为其中 x 和 y 为键的值?或者键必须是单个值?我注意到如果我使用reduceByKey and sum获取数据的函数((x,3),(y,4))那么将这些数据定义为键值对就变得容易多了

Python 是一种动态类型语言,PySpark 不使用任何特殊类型的键、值对。对象被视为有效数据的唯一要求PairRDD操作是可以按如下方式解包:

k, v = kv

通常您会使用两个元素tuple由于其语义(固定大小的不可变对象)和与 Scala 的相似性Product类。但这只是一个约定,没有什么可以阻止你这样做:

键值.py

class KeyValue(object):
    def __init__(self, k, v):
        self.k = k
        self.v = v
    def __iter__(self):
       for x in [self.k, self.v]:
           yield x
from key_value import KeyValue

rdd = sc.parallelize(
    [KeyValue("foo", 1), KeyValue("foo", 2), KeyValue("bar", 0)]) 

rdd.reduceByKey(add).collect()
## [('bar', 0), ('foo', 3)]

并使任意类表现得像核心价值。因此,如果某个东西可以被正确地解包为一对对象,那么它就是一个有效的对象核心价值。实施__len__ and __getitem__魔法方法应该也有效。处理这个问题最优雅的方法可能是使用namedtuples.

Also type(rdd.take(1))返回一个list长度n所以它的类型总是相同的。

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

如何确定对象是否是 PySpark 中的有效键值对 的相关文章

随机推荐

  • 使用 ionic 3 中的 Angularfire2 从 Firestore 获取集合文档的 ID

    这个问题在这里已经有答案了 我正在尝试获取集合的 id 以在离子页面中使用它 这是我的界面 export interface Item categoryOfPost string imageUrl string nameOfPost str
  • 如何使用 Python 3.x 读取和编辑 Google 电子表格?

    我知道我可以使用以下命令阅读和编辑 Google 电子表格gdata 但没有适用于 Python 3 的 gdata 版本 即使我想使用 Python 3 是否有一种 不是很复杂 的方法来编辑 Google 电子表格 我编写了一个替代方案G
  • 如何在 ffmpeg HLS 中启用 cookie

    有人知道如何在 ffmpeg 中启用 cookie 交互吗 我有一个 HLS 流 需要从服务器保存 cookie 但实际上这不会发生 你可以发送标头与 FFmpeg Linux ffmpeg i INPUT headers Cookie l
  • PyQt QLineEdit 与 QValidator

    我的项目中有一个 QLineEdit 我想在 qlineEdit 上使用验证 Create lineEdit itemValue QtWidgets QLineEdit Create objValidator QtGui QDoubleVa
  • 如何逐步安装和使用 joomla rest api

    请帮忙 我想在 joomla 2 5 中使用 REST api 我在 Github 和 techjoomla 上进行了很多搜索并花了很多天 我不明白如何安装 API 扩展或插件并使用它 即使我没有找到任何正确的文档来使用 API 以及从哪里
  • 使用 XSLT 减少 XML 输出

    如何使用 XSLT 仅从输入 xml 中选择一些 xml 标签到输出 XML 输入示例
  • 设置属性logging.pattern.console或logging.pattern.level时忽略覆盖模式

    使用 spring boot 1 3 2 我试图覆盖 application properties 文件中的 logback 模式 但无论我放入什么模式 总是会调用 spring boot jar xml 中的默认模式 我可以成功调整日志记
  • 如何在docker机器中挂载本地卷

    我正在尝试将 docker machine 与 docker compose 一起使用 文件 docker compose yml 的定义如下 web build command run web sh volumes app ports 8
  • 将标量和数组元素传递给需要数组的过程

    我有一些遗留的 Fortran 77 代码 我试图至少在不发出警告的情况下进行编译 不禁用警告 有些子例程调用会传递一个标量 而子例程需要一个数组 因为标量被用作大小为 1 的数组 所以这不会导致任何问题 但是使用英特尔编译器 如果我启用接
  • Python3、Selenium 和 Chrome 可移植

    也许有人可以帮助使用 Windows Python Selenium 以及使用 Chrome Webdriver 和 ChromePortable 我定义了一个新文件夹 c 我的项目 在此文件夹中 网络驱动程序位于 c myproject
  • 如何实现多维序列

    例如 这是每年的序列 这no增量与year no year 1 2016 2 2016 3 2016 1 2017 2 2017 4 2016 现在我已经为每年创建了序列但问题是Oracle不会在明年自动创建新的序列 另一个问题是如果我想使
  • sqlsrv_query 是否限制一个查询中可以执行的语句数量?

    我正在生成一个 SQLinsertPHP 中的语句for loop 生成的 SQL 字符串是大量单独的 SQL 语句 如下所示 INSERT INTO tbl VALUES 1 2 3 INSERT INTO tbl VALUES 4 5
  • NHibernate 如何将交叉引用表映射到包?

    我最近继承了一个包含 NHibernate 的工作项目 我对它非常陌生 必须对其中一个映射进行修改 我已阅读文档here我仍然不确定如何做到这一点 或者我的理解 术语是否正确 因此 鉴于以下表结构 我需要一个包来获取 ProjectName
  • 需要另一个帮助才能在屏幕上动态显示文本

    现在我使用 d3 js 遇到了第二个问题 我自己无法解决 我得到了一个动态数组 路径 当我点击时 其长度总是会改变 然后我在 svg 的起始位置 112 490 得到了一个 文本 变量 在你们的帮助下 我现在使用 for 循环根据控制台上的
  • 为什么当 Java 执行 Windows 批处理文件时,它们没有被处理?

    我有 2 个文件夹 每个文件夹包含数十个批处理文件 bat 包含类似于以下任一文本的批处理文件 del f q F MEDIA IMAGE99 2010 270 z 4034 123 tif gt nul del f q F MEDIA I
  • 如何解释机器学习模型的损失和准确性[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 当我使用 Theano 或 Tensorflow 训练我的神经网络时 它们会报告每个时期的一个名为 损失 的变量 我应该如何解释这个变量 损失越高越好或越差 或者它对我的神经网络的最
  • 以安全的方式使用docker的远程API

    我正在尝试找到一种有效的方法来安全地使用 docker 远程 API 我有一个在远程主机上运行的 docker 守护进程 以及在另一台机器上运行的 docker 客户端 我需要我的解决方案不依赖于客户端 服务器操作系统 以便它与任何具有 d
  • Python 有包/模块管理系统吗?

    Python 是否有包 模块管理系统 类似于 Ruby 有 ruby gems 您可以这样做gem install packagename On 安装Python模块 我只看到引用python setup py install 但这需要您先
  • SimpleXML/PHP - 无法访问对象

    tmp2
  • 如何确定对象是否是 PySpark 中的有效键值对

    如果我有一个 rdd 我如何理解数据在 key value 中 格式 有没有办法找到相同的东西 就像 type object 告诉我对象的类型 我试过print type rdd take 1 但它只是说