您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

5b51 2022/1/14 8:22:04 python 字数 2482 阅读 509 来源 www.jb51.cc/python

>如果我有一个rdd,我如何理解数据在key:value中格式?有没有办法找到相同的东西 - 像type(object)告诉我一个对象的类型.我试过打印type(rdd.take(1)),但它只是说< type'list'>.>假设我有一个像(x,1),(x,2),(y,1),(y,3)的数据,我使用groupByKey和got(x,(1,2))

概述

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

k,v = kv

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

key_value.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",KeyValue("foo",KeyValue("bar",0)]) 

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

并使任意类的行为类似于键值.因此,如果某些东西可以正确解压缩为一对对象,那么它就是一个有效的键值.实现__len__和__getitem__魔术方法也应该有效.可能最优雅的方法是使用namedtuples.

此外,type(rdd.take(1))返回长度为n的列表,因此其类型将始终相同.

总结

以上是编程之家为你收集整理的python – 如何确定对象是否是PySpark中的有效键值对全部内容,希望文章能够帮你解决python – 如何确定对象是否是PySpark中的有效键值对所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶