我在Spark中编写了一个FilterFunction来过滤DataSet中的行。它工作得很好,但新的要求是我需要将所有省略的行保存到不同的位置。那么最好的方法是什么呢?
我的目标是确保不会两次使用相同的DataSet;一次是过滤掉我想要的行,一次是得到省略的行。
这样做有可能吗?我想,如果有其他方法,我不需要使用FilterFunction。
public class MyFilterFunction implements FilterFunction<Row> {
@Override
public boolean call(Row row) {
boolean filter = false
// Some business logic here
return filter;
}
}发布于 2019-10-03 14:27:23
代替过滤函数,编写一个用户定义的函数,它将根据过滤条件添加一个额外的列‘分区’。实际数据-数据,过滤数据-省略。然后使用分区程序在分区列上写入df。
+----+----------------+---------+
|col1|filtercondition |partition|
+----+----------------+---------+
| a| true| data|
| b| false| omitted|
+----+----------------+---------+
//Output
//hdfs://..../data/ //Actual Data
//hdfs://..../omitted/ //Filtered Data发布于 2019-10-13 22:50:41
您正在尝试从一个数据集中生成两个数据集。但是,DataSet接口目前没有提供任何转换(除了随机拆分,它不会解决您的问题)。
https://stackoverflow.com/questions/58212247
复制相似问题