【问题标题】:Create pair RDDs from list of characters从字符列表创建对 RDD
【发布时间】:2021-02-28 17:54:19
【问题描述】:

我正在尝试创建一个配对的 RDD,其中的键将来自一个 RDD,值都将是 1。

例如,如果有人要导入字符串 "hello world!" 并将其并行化为 RDD,则输出将是:('h', 1), ('e', 1), ('l', 1), ('l', 1),...

到目前为止,我已经写过:

keyRDD = characterRDD.map(lambda x: (x, 1))

这导致(['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd,' '!'], 1) 的输出。关闭,但不是我想要的。

我也尝试过使用 for 循环,但在尝试迭代 RDD 时收到错误。

【问题讨论】:

    标签: python apache-spark pyspark rdd


    【解决方案1】:

    您可以将flatMap 与列表理解一起使用:

    rdd = sc.parallelize(["hello world!"])
    
    rdd = rdd.flatMap(lambda s: [(l, 1) for l in s if l != ' '])
    
    print(rdd.collect())
    #[('h', 1), ('e', 1), ('l', 1), ('l', 1), ('o', 1), ('w', 1), ('o', 1), ('r', 1), ('l', 1), ('d', 1), ('!', 1)]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-14
      • 2019-08-11
      • 2014-02-10
      • 2011-04-20
      • 2019-01-15
      • 2016-08-10
      • 2016-12-02
      相关资源
      最近更新 更多