寻求在Spark中对值进行分类的有效方法

时间:2016-03-26 22:27:35

标签: apache-spark pyspark

希望改进我当前的方法(提高速度)以完成RDD并快速对行值进行分类。例如,假设我有四列五行,并且想要计算每列中每个类别中的值的数量。我的最终结果如下:

Column Name  Category 1  Category 2  Category 3
Col 1           2           3           0
Col 2           0           4           1
Col 3           0           0           5
Col 4           2           2           1

我一直在测试两种方法:

方法1

  • 将每一行映射到行计数元组列表。在数据看起来像[' val1',2.0,' 0001231',True] - >之前之后它看起来像[(1,0,0),(0,1,0),(0,1,0),(0,0,1)]
  • 通过添加元组来减少每一行
  

my_rdd.map("分类&#34的功能;)。减少("添加元组")

方法2

  • 将每个值平面映射到其自己的行作为键值对。与第一种方法类似,但结果看起来像(" col1",(1,0,0),(" col2",(0,1,0)),(&# 34; col3",(0,1,0)),(" col4",(0,0,1)),其中每个元组都成为一个新行。
  • 按键减少
  

my_rdd.flatMap("为每个列值分类和创建行的功能")。reduceByKey("为每列添加元组")

对于通用RDD,有更有效的方法吗?在我进行映射时,我还希望计算不同的值,但要意识到这需要单独讨论。

0 个答案:

没有答案