如何在 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

如何在 spark scala 中为单列创建数据框

如何将列添加到 mapPartitions 内的 org.apache.spark.sql.Row

如何在 Spark SQL 中为每个组创建 z 分数

如何在 Spark ML 中为分类创建正确的数据框

如何使用来自另一个 Dataset<Row> 的记录更新 Dataset<Row>,这些记录在 Spark 中使用 JAVA API 具有相同的模式?