如何将数据集行类型转换为数据集字符串类型

时间:2017-11-03 12:43:40

标签: apache-spark

我正在使用带有java 8的spark 2.2。我在Rowtype中有一个数据集,我想将这个数据集用于ML模型,所以当我使用数据集进入模型时,我想将数据集转换为数据集,如下所示:

  

类型不匹配:无法从数据集转换为数据集

我喜欢scala的解决方案,但我想把它做成java。

df.map(row => row.mkString())
val strings = df.map(row => row.mkString()).collect 

2 个答案:

答案 0 :(得分:3)

首先将Row数据集转换为列表,然后将该列表转换为String数据集。试试这个

Dataset<Row> df= spark.read()... 
List<String> list = df.as(Encoders.STRING()).collectAsList();
Dataset<String> df1 = session.createDataset(list, Encoders.STRING()); 

答案 1 :(得分:1)

如果您打算逐行读取数据集,则可以对数据集使用迭代器:

     Dataset<Row>csv=session.read().format("csv").option("sep",",").option("inferSchema",true).option("escape, "\"").option("header", true).option("multiline",true).load(users/abc/....);

    for(Iterator<Row> iter = csv.toLocalIterator(); iter.hasNext();) {
        String item = (iter.next()).toString();
        System.out.println(item.toString());    
    }