【问题标题】:PySpark equivalent of Flatmapgroups RDDPySpark 等效于 Flatmapgroups RDD
【发布时间】:2018-04-10 16:04:56
【问题描述】:

我有如下数据:

+----+----+
|user|item|
+----+----+
|   a|   1|
|   a|   2|
|   a|   3|
|   b|   1|
|   b|   5|
|   b|   4|
|   b|   7|
|   c|  10|
|   c|   2|
+----+----+

我希望得到如下转换后的数据:

(a,(a,1))
(a,(a,2))
(a,(a,3))
(b,(b,1))
(b,(b,5))
(b,(b,4))
(b,(b,7))
(c,(c,10))
(c,(c,2))

它们可能是单独的 rdd。对我来说没问题。

可以在 scala 和 java 中使用数据集以及 groupbykey 和 flatmapgroups 的组合来完成,但不幸的是 pyspark 中没有数据集或 flatmapgroups。

我在 pypsark 上尝试了一些 flatmap 和 flatmapvalues 转换,但我无法获得正确的结果。

如何通过使用 pyspark 获得预期结果?

【问题讨论】:

    标签: python apache-spark pyspark rdd flatmap


    【解决方案1】:

    请你看看我下面的代码。我认为您可以使用此代码 sn-p 找到解决方案。

    [root@sandbox work]# hadoop dfs -put sample.txt /user/

    示例.txt

    a|1
    a|2
    a|3
    b|1
    b|5
    b|4
    b|7
    c|10
    c|2 
    

    [root@sandbox 工作]#pyspark

    lines = sc.textFile("hdfs://sandbox/user/sample.txt")
    
    def parse(line):
        return (line.split('|')[0], (line.split('|')[0], line.split('|')[1]))
    
    parsed_lines = lines.map(parse)
    
    parsed_lines.collect()
    
    [(u'a', (u'a', u'1')), (u'a', (u'a', u'2')), (u'a', (u'a', u'3')), (u'b', (u'b', u'1')), (u'b', (u'b', u'5')), (u'b', (u'b', u'4')), (u'b', (u'b', u'7')), (u'c', (u'c', u'10')), (u'c', (u'c', u'2'))]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-16
      • 2023-03-24
      • 1970-01-01
      • 2015-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多