new*_*ner 6 scala dataframe apache-spark
我有一个DataFrame通过运行sqlContext.readParquet文件创建的.
在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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6973 次 |
| 最近记录: |