![](/img/trans.png)
[英]How to convert JavaRDD<List<String>> to JavaRDD<String> and write to a file without "[" and "]"
[英]How convert JavaRDD<Row> to JavaRDD<List<String>>?
JavaRDD<List<String>> documents = StopWordsRemover.Execute(lemmatizedTwits).toJavaRDD().map(new Function<Row, List<String>>() {
@Override
public List<String> call(Row row) throws Exception {
List<String> document = new LinkedList<String>();
for(int i = 0; i<row.length(); i++){
document.add(row.get(i).toString());
}
return document;
}
});
我尝试使用此代码制作它,但我得到了 WrappedArray
[[WrappedArray(happy, holiday, beth, hope, wonderful, christmas, wish, best)], [WrappedArray(light, shin, meeeeeeeee, like, diamond)]]
如何正确制作?
您可以使用getList
方法:
Dataset<Row> lemmas = StopWordsRemover.Execute(lemmatizedTwits).select("lemmas");
JavaRDD<List<String>> documents = lemmas.toJavaRDD().map(row -> row.getList(0));
其中lemmas
是带有词形还原文本的列的名称。 如果只有一列(看起来是这种情况),您可以跳过select
。 如果您知道列的索引,您也可以跳过select
并将索引传递给getList
但它容易出错。
您当前的代码遍历Row
而不是您要提取的字段。
这是使用 excel 文件的示例:
JavaRDD<String> data = sc.textFile(yourPath);
String header = data.first();
JavaRDD<String> dataWithoutHeader = data.filter(line -> !line.equalsIgnoreCase(header) && !line.isEmpty());
JavaRDD<List<String>> dataAsList = dataWithoutHeader.map(line -> Arrays.asList(line.split(";")));
希望这个和平的代码可以帮助你
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.