如何在 Apache Spark 中跨列创建 RDD 分区?
Posted
技术标签:
【中文标题】如何在 Apache Spark 中跨列创建 RDD 分区?【英文标题】:How to create RDD partitions across columns in Apache Spark? 【发布时间】:2016-06-17 07:53:46 【问题描述】:我有一个如下所示的 csv 文件:
时间(秒)Measure1 Measure2 Measure3..... Measuren
0
0.25
0.50
0.75
1
...
3600
我希望在这个文件中创建自定义分区,使分区看起来像这样:
分区 1
时间(以秒为单位)测量1
分区2
时间(以秒为单位)测量2
...
分区
测量时间(以秒为单位)
我想这样做,因为我想为每个测量计算聚合,例如平均值、中位数等。
我的想法是,如果我使用 mapPartitions 进行操作,例如,意味着在一个分区上,它将在所有分区中并行发生。
我希望避免使用 groupBy columnn 值,因为它会导致洗牌操作
有什么方法可以实现吗?
谢谢。
问候,
维奈·乔格勒卡
【问题讨论】:
【参考方案1】:好吧,我会这样做:
-
一个将文件作为输入的函数,然后读取 4 行并将这些行合并到您选择的某个集合类型中并生成它。这将持续到没有从文件中读取的内容。
-
映射该函数的输出,并将生成的列表(例如 List 是您选择的集合)转换为 DataFrame。
然后使用 describe() 或任何其他聚合函数执行任何操作。
【讨论】:
以上是关于如何在 Apache Spark 中跨列创建 RDD 分区?的主要内容,如果未能解决你的问题,请参考以下文章