繁体   English   中英

Scala/Spark - 使用另一数据集中的一列创建数据集

[英]Scala/Spark - Create Dataset with one column from another Dataset

我正在尝试从案例类创建一个只有一列的数据集。

下面是代码:

case class vectorData(value: Array[String], vectors: Vector)


def main(args: Array[String]) {
    val spark = SparkSession.builder
      .appName("Hello world!")
      .master("local[*]")
      .getOrCreate()
    import spark.implicits._
    //blah blah and read data etc. 
    val word2vec = new Word2Vec()
        .setInputCol("value").setOutputCol("vectors")
        .setVectorSize(5).setMinCount(0).setWindowSize(5)
    val dataset = spark.createDataset(data)

    val model = word2vec.fit(dataset)


    val encoder = org.apache.spark.sql.Encoders.product[vectorData]
    val result = model.transform(dataset).as(encoder)

    //val output: Dataset[Vector]  = ???
}

如代码的最后一行所示,我希望输出只是具有Vector类型和vectors数据的第二列。

我试过:

val output = result.map(o => o.vectors)

但是这一行突出显示错误No implicit arguments of type: Encoder[Vector]

如何解决这个问题?

我认为线:

implicit val vectorEncoder: Encoder[Vector] = org.apache.spark.sql.Encoders.product[Vector]

应该做

val output = result.map(o => o.vectors)

正确的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM