如何在 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 分区?的主要内容,如果未能解决你的问题,请参考以下文章

在 R 中跨列(不是行!)滚动减法

在 Apache Spark 中跨执行程序共享数据

在 R dbplyr 中跨列(按行)操作

在 SQL Server 2008 视图中跨列计算特定值

SQL查询单表中跨列唯一值

R中跨列的条件均值