加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala:如何获取数据帧中的一系列行

发布时间:2020-12-16 09:55:47 所属栏目:安全 来源:网络整理
导读:我有一个通过运行Parquet文件的sqlContext.read创建的DataFrame. DataFrame由300 M行组成.我需要使用这些行作为另一个函数的输入,但我想以较小的批量执行它以防止OOM错误. 目前,我使用df.head(1000000)来读取前1M行,但我找不到一种方法来读取后续行.我试过df
我有一个通过运行Parquet文件的sqlContext.read创建的DataFrame.

DataFrame由300 M行组成.我需要使用这些行作为另一个函数的输入,但我想以较小的批量执行它以防止OOM错误.

目前,我使用df.head(1000000)来读取前1M行,但我找不到一种方法来读取后续行.我试过df.collect(),但它给了我一个Java OOM错误.

我想迭代这个数据帧.我尝试使用withColumn()API添加另一个列来生成一组唯一值来迭代,但数据框中的所有现有列都没有唯一值.

例如,我尝试了val df = df1.withColumn(“newColumn”,df1(“col”)1)以及val df = df1.withColumn(“newColumn”,lit(i = 1)),两者都做了不返回一组连续的值.

获取数据帧的前n行然后接下来的n行的任何其他方法,就像SqlContext的范围函数一样?

解决方法

您可以简单地使用限制,除了数据集或数据帧的api,如下所示

long count = df.count();
int limit = 50;
while(count > 0){
    df1 = df.limit(limit);
    df1.show();            //will print 50,next 50,etc rows
    df = df.except(df1);
    count = count - limit;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读