当前位置: 首页 > 知识库问答 >
问题:

按Key进行火花分组并对数据进行分区

子车桐
2023-03-14

我有一个大的csv文件,其中包含以下格式的数据。

CityId1,名称,地址,........., zip

城市2、姓名、地址等,。。。。。。。,拉链

CityId1,名称,地址,........., zip

.........

城市名称、姓名、地址等,。。。。。。。,拉链

我正在对上面的csv文件执行以下操作:

>

df1。groupBy($“cityId”)。agg(收集列表(结构(cols.head,cols.tail:*)作为“资源”)

把它改成jsonRDD

jsonDataRdd2=df2.toJSON. rdd

迭代每个分区并上传到每个键的s3

  • 我不能使用数据帧分区写,因为业务逻辑限制(其他服务如何从S3读取)

我的问题:

  • spark分区的默认大小是多少

共有1个答案

南门洋
2023-03-14

回答你的问题:

>

当应用“宽转换”和重新分区时,分区的数量和大小最有可能发生变化。给定分区的大小具有最大值。在Spark 2.4. x中,分区大小增加到8GB。因此,如果任何转换(例如collect_list与GroupBy相结合)根超过这个最大大小,您将得到一个错误,程序中止。因此,您需要明智地进行分区,或者在您的情况下有足够数量的分区进行聚合——请参见spark.sql.shuffle.partitions参数。

Spark处理的并行模型依赖于通过散列、范围分区等分配的“键”。被分发到一个且只有一个分区——洗牌。所以,迭代通过一个分区Foreach分区,映射分区是没有问题的。

 类似资料:
  • 问题内容: 带有以下数据 我想产生以下输出: 如果我按价格分组并显示最大日期和最小日期,那么我将得到以下不是我想要的内容(请参见重叠的日期)。 因此,基本上我想做的是根据组列产品和价格对数据进行逐步更改。 什么是最干净的方法来做到这一点? 问题答案: 有一种(或多或少)解决此类问题的已知技术,涉及两个调用,如下所示: 输出:

  • 我想按多个列对熊猫数据框进行分组。每个Row都有一个整数、一个Name和一个额外的数值。我希望最终的Dataframe包含Name具有最高整数的每一行。 通过分组数据帧,只有第0行应该消失。第3行和第4行仍应包括在数据框中。

  • 有人知道一种方法(如果可能的话也可以使用lodash)通过对象键对对象数组进行分组,然后根据分组创建新的对象数组吗?例如,我有一个汽车对象数组: 我想制作一个由分组的新汽车对象数组:

  • 有如下两张表: 1、区域表 2、数量表 根据区域统计数量表获取每个区的数量 获得结果如下: count name 28 A区 18 B区 19 C区 26 D区 问题:现在需要将A和B区的数据合并起来算作A区的数据 期望的是: count name 46 A区+B区 19 C区 26 D区 SQL应该如何调整

  • 问题是: 你有N (N代表你拥有的数字的数量)个数字。将他们分成两组,使各组数字之和的差异最小。 例子: 如果我们把1、9和3放在A组,把5和8放在B组,差异是0。 我认为首先我应该计算所有数字的总和并将其除以2。然后检查任何可能的数字组合,其总和不大于所有数字之和的一半。完成此操作后,我将选择最大的数字并打印出组。 我对所有的组合都有问题,特别是当N是大数字时。如何运行所有组合? 我的想法也有点

  • 如何根据列中项数的计数来分区DataFrame。假设我们有一个包含100人的DataFrame(列是和),我们希望为一个国家中的每10个人创建一个分区。 如果我们的数据集包含来自中国的80人,来自法国的15人,来自古巴的5人,那么我们需要8个分区用于中国,2个分区用于法国,1个分区用于古巴。 下面是无法工作的代码: null 有什么方法可以动态设置每个列的分区数吗?这将使创建分区数据集变得更加容易