簡體   English   中英

如何轉換 JavaRDD<Row> 到 JavaRDD <List<String> &gt;?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM