在我的Java应用程序中,我需要解析一个DataSet<Row>
,然后根据一个函数复制一些行,并更改重复行中一列的值。
编辑:根据地图功能,行可以重复2次或3次,每个副本的值都不同。
我们来看DataSet<Row> foo
(内容已经用镶木地板文件初始化)。现在我想应用foo.flatMap(bar, ??)
其中bar
是FlatMapFunction<Row, Row>
返回迭代器而??
是一个我无法理解的字段,因为文档非常这种方法的信息很差。
迭代器的构造如下:
final List<Row> list = new ArrayList<Row>();
list.add(row);
final Object[] newRow = new Object[row.length()];
for (int i = 0; i<row.length();i++){
newRow[i] = row.get(i);
}
newRow[row.fieldIndex("fieldName")] = someLong;
list.add(RowFactory.create(newRow));
return list.iterator();
我是否以正确的方式创建迭代器?
这个神秘的编码器是什么?我应该在这个领域放些什么?
答案 0 :(得分:1)
ConnectionThread
文档说
首先将函数应用于此数据集的所有元素,然后展平结果,以返回新的数据集。
我认为您应该使用flatMap()
来获取数据集,该数据集仅包含您要复制和修改的行。之后,使用filter()
然后使用foreach()
两个数据集修改这些行。
请注意,我还没试过这个,所以我不确定union()
方法是创建包含新行的数据集,还是仅仅引用原始数据集中的行。如果它没有创建新行,那么只需将所有已过滤的行合并到一个新数据集中。