如何在 Spark 中为 Row、LabeledPointData 设置编码器?
Posted
技术标签:
【中文标题】如何在 Spark 中为 Row、LabeledPointData 设置编码器?【英文标题】:How to set Encoder for Row, LabeledPointData in Spark? 【发布时间】:2017-05-29 09:43:17 【问题描述】:如何为 LabeledPointData 设置编码器,它是 Double、Double 向量的组合。如何设置编码器以创建 DataFrame?
public static Dataset<LabeledPoint> convertRDDStringToLabeledPoint(Dataset<String> data,String delimiter)
Dataset<LabeledPoint> labeledPointData = data.map(
(data1)->
String splitter[] = data1.split(delimiter);
double[] arr = new double[splitter.length - 1];
IntStream.range(0,arr.length).forEach(i->arr[i]=Double.parseDouble(splitter[i+1]));
return new LabeledPoint(Double.parseDouble(splitter[0]), Vectors.dense(arr));
,Encoders.???);
return labeledPointData;
【问题讨论】:
【参考方案1】:LabeledPoint
是 Scala 中的一个案例类,所以我认为它是 Encoders.product[LabeledPoint]
。
(我不知道用Java怎么写)
【讨论】:
以上是关于如何在 Spark 中为 Row、LabeledPointData 设置编码器?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spark 2 Scala 中将 Row 转换为 json
如何将列添加到 mapPartitions 内的 org.apache.spark.sql.Row
如何使用来自另一个 Dataset<Row> 的记录更新 Dataset<Row>,这些记录在 Spark 中使用 JAVA API 具有相同的模式?