我正在使用带有java 8的spark 2.2。我在Rowtype中有一个数据集,我想将这个数据集用于ML模型,所以当我使用数据集进入模型时,我想将数据集转换为数据集,如下所示:
类型不匹配:无法从数据集转换为数据集
我喜欢scala的解决方案,但我想把它做成java。
df.map(row => row.mkString())
val strings = df.map(row => row.mkString()).collect
答案 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());
}