当前位置: 首页 > 面试题库 >

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

毕霖
2023-03-14
问题内容
  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))。有没有一种方法可以将x和y定义 为键(1,2)(1,3)值?还是键必须是单个值?我注意到,如果我使用reduceByKeysum函数来获取数据,((x,3),(y,4))那么将这些数据定义为键值对变得容易得多

问题答案:

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

k, v = kv

通常,tuple由于其语义(固定大小的不可变对象)和与ScalaProduct类的相似性,您将使用两个元素。但这只是一个约定,没有什么可以阻止您执行以下操作:

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

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

并使任意类的行为类似于 键值 。因此,如果可以将某事物正确地解压缩为一对对象,那么它就是有效的 键值
。实现方法__len____getitem__魔术方法也应该起作用。处理此问题的最优雅的方法可能是使用namedtuples

type(rdd.take(1))返回一个listlength,n因此其类型将始终相同。



 类似资料:
  • 问题内容: 我需要确定JavaScript中的数组中是否已存在对象。 例如(dummycode): 现在,“carBrands”数组包含所有实例。我现在正在寻找一种快速解决方案,以检查car1,car2,car3或car4的实例是否已经在carBrands数组中。 例如: car1和car4包含相同的数据,但是不同的实例,应测试它们是否相等。 我是否在创建时向对象添加了哈希值?还是有更快的方法来用

  • 我有一个JSON对象,如下所示: 我想检查是否存在一个值为“id2”的id,java中是否有任何UTIL允许我这样做,而无需遍历所有对象并将字符串与目标进行比较? 附言:我不想知道“id”字段是否存在,使用JSONObject.has(键),这不是我要问的。

  • 问题内容: 有像isiterable这样的方法吗?到目前为止我找到的唯一解决办法就是打电话 但是我不确定这有多愚蠢。 问题答案: 检查是否可以处理序列类型,但是对于Python 2中的字符串可能会失败。我也想知道正确的答案,在此之前,这是一种可能性(也适用于字符串): 所述内置的检查的方法或串的情况下的方法。 另一种通用的pythonic方法是假定一个可迭代的对象,如果它不适用于给定的对象,则将优

  • 在查看几个不同的文档时,我只看到地图(ECMAScript6)键是布尔值、字符串或整数。有没有一种方法可以使用另一个定制的对象(用新的CustomObject(x, y)构造函数调用调用)作为键添加? 我可以添加一个对象作为密钥,但无法检查地图是否有所述对象。 有办法解决这个问题吗? https://developer.mozilla.org/en-US/docs/Web/JavaScript/R

  • 问题内容: 有谁知道PHP的健壮(和防弹)is_JSON函数代码片段?我(显然)遇到一种情况,我需要知道字符串是否为JSON。 嗯,也许通过JSONLint请求/响应来运行它,但这似乎有点过头了。 问题答案: 如果您使用内置的PHP函数,则 返回最后一个错误(例如, 当您的字符串不是JSON时)。 无论如何通常都会返回。

  • 问题内容: 如何检查值是否是JavaScript中的Object? 问题答案: 更新 : 这个答案是不完整的,并且会产生误导性的结果 。例如,在JavaScript中也被视为类型,更不用说其他几种极端情况了。请遵循以下建议,然后转到其他 原始答案 : 尝试使用和/或。 编辑:这个答案给出了一个如何检查变量属性的想法,但是它不是一个防弹配方(毕竟根本没有配方!)来检查它是否是一个对象,而不是对象。由