簡體   English   中英

在 spark scala 中將行轉換為列表

[英]Convert a row to a list in spark scala

有可能這樣做嗎? 我的數據框(~1000 cols)中的所有數據都是雙精度數,我想知道是否可以將一行數據轉換為雙精度數列表?

您可以在 Row 上使用toSeq方法,然后將類型從Seq[Any]轉換為Seq[Double] (如果您確定所有列的數據類型都是 Double):

val df = Seq((1.0,2.0),(2.1,2.2)).toDF("A", "B")
// df: org.apache.spark.sql.DataFrame = [A: double, B: double]

df.show
+---+---+
|  A|  B|
+---+---+
|1.0|2.0|
|2.1|2.2|
+---+---+

df.first.toSeq.asInstanceOf[Seq[Double]]
// res1: Seq[Double] = WrappedArray(1.0, 2.0)

如果您有 String 類型的列,請使用toSeq然后使用帶有模式匹配的mapString轉換為Double

val df = Seq((1.0,"2.0"),(2.1,"2.2")).toDF("A", "B")
// df: org.apache.spark.sql.DataFrame = [A: double, B: string]

df.first.toSeq.map{ 
    case x: String => x.toDouble
    case x: Double => x 
}
// res3: Seq[Double] = ArrayBuffer(1.0, 2.0)

如果您有一個帶有doublesdataframe ,您想將其轉換為List of doubles ,那么只需將dataframe框轉換為rdd這將為您提供RDD[Row]您可以將其轉換為List

dataframe.rdd.map(_.toSeq.toList)

您將獲得list of doubles

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM