首页 文章

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

提问于
浏览
5

我有一个通过运行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的范围函数一样?

1 回答

  • 6

    您可以简单地使用限制,除了数据集或数据帧的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;
    }
    

相关问题