(spark源码)randomSplit算子

摘要

ods层是高度聚合的数据, 经常需要将一张大表拆分为多张小表.
hive的分表基本只能依靠when, 通过多次遍历完成过滤, 但由于spark可以指定分区, 于是考虑借助自定义分区后, 借助分区直接对表进行拆分
先说结论: 思路失败, 建议选择filter或者when完成分表
本文用于记录思路和简析randomSplit方法

思路

如果api中有相应的方法, 可以直接拆分单表为多表, 那么该方法返回的结果, 应该是一个rdd, dataset 或者dataframe的集合.
于是查找了相关的api, 发现还真有一个:

  def randomSplit(weights: Array[Double]): Array[Dataset[T]] = {
    randomSplit(weights, Utils.random.nextLong)
  }

该方法传入一个全正数的Double数组, 将Dataset按对应百分比进行随机切分.
我们的需求是按照分区进行切分, 说不定可以借鉴下该方法. 于是追了下源码

源码

// seed是随机数的种子
def randomSplit(weights: Array[Double], seed: Long): Array[Dataset[T]] = {
  // 对Double数组进行健壮性判断 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值