从 Scala 上的 Spark RDD 对象构建 RDD LabeledPoint

Posted

技术标签:

【中文标题】从 Scala 上的 Spark RDD 对象构建 RDD LabeledPoint【英文标题】:Build a RDD LabeledPoint from a Spark RDD object on scala 【发布时间】:2016-05-31 12:58:33 【问题描述】:

我想从RDD对象构建一个RDD[LabeledPoint],RDD对象如下:

 +-------------------+---------+--------------+--------+-------+
 |          date_time|site_name|posa_continent|year    |label  |
 +-------------------+---------+--------------+--------+-------+
 |2014-08-11 07:46:59|        2|             3|2014    |1      |
 |2014-08-11 08:22:12|        2|             3|2014    |2      |
 |2015-08-11 08:24:33|        2|             3|2015    |1      |
 |2016-08-09 18:05:16|        2|             3|2016    |3      |
 |2011-08-09 18:08:18|        2|             3|2011    |2      |
 |2009-08-09 18:13:12|        2|             3|2009    |1      |
 |2014-07-16 09:42:23|        2|             3|2014    |1      |
 +-------------------+---------+--------------+--------+-------+

我想构造一个带有label 属性的RDD[LabeledPoint],以便应用KNN 机器学习算法。我使用 Spark Scala API。

【问题讨论】:

你的问题到底是什么?你试过什么? 我尝试创建一个带有标签值的数组,但我认为这不是好方法 您希望rdd 中的哪些信息包含在您的labeledPoint 中? 我想包含 date_time、site_name、posa_continent、year 和 label 作为labeledPoint 对象的标签 Przemek 在下面的回答给出了您正在寻找的基本结构。但是,我怀疑 date_time 和 year (至少)对你想要的东西有用。您可以考虑先对变量进行一些预处理。 【参考方案1】:

在 RDD 上尝试map 函数:

rddsObject.map(object => LabeledPoint(object.label, Vectors.dense(object.site_name,object.posa_continent,object.year))

【讨论】:

以上是关于从 Scala 上的 Spark RDD 对象构建 RDD LabeledPoint的主要内容,如果未能解决你的问题,请参考以下文章

Spark:scala - 如何将集合从 RDD 转换为另一个 RDD

spark中的RDD是啥

Spark程序进行单元测试-使用scala

spark浅谈:RDD

Scala和Spark,rdd从字典创建数据框

rdd.mapPartitions 从 Spark Scala 中的 udf 返回布尔值