scala - 带点 Spark 的列名

标签 scala apache-spark apache-spark-sql apache-spark-mllib apache-spark-ml

我正在尝试从 DataFrame 中获取列并将其转换为 RDD[Vector] .

问题是我有名称中带有“点”的列作为以下数据集:

"col0.1","col1.2","col2.3","col3.4"
1,2,3,4
10,12,15,3
1,12,10,5

这就是我正在做的:
val df = spark.read.format("csv").options(Map("header" -> "true", "inferSchema" -> "true")).load("C:/Users/mhattabi/Desktop/donnee/test.txt")
val column=df.columns.map(c=>s"`${c}`")
val rows = new VectorAssembler().setInputCols(column).setOutputCol("vs")
  .transform(df)
  .select("vs")
  .rdd
val data =rows.map(_.getAs[org.apache.spark.ml.linalg.Vector](0))
  .map(org.apache.spark.mllib.linalg.Vectors.fromML)

val mat: RowMatrix = new RowMatrix(data)
//// Compute the top 5 singular values and corresponding singular vectors.
val svd: SingularValueDecomposition[RowMatrix, Matrix] = mat.computeSVD(mat.numCols().toInt, computeU = true)
val U: RowMatrix = svd.U  // The U factor is a RowMatrix.
val s: Vector = svd.s  // The singular values are stored in a local dense vector.
val V: Matrix = svd.V  // The V factor is a local dense matrix.

println(V)

请帮助我考虑名称中带有点的列。谢谢

最佳答案

如果您的问题是 .(dot)在列名中,您可以使用 `(backticks)将列名括起来。
df.select("`col0.1`")

关于scala - 带点 Spark 的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44367019/

相关文章:

sql - 如何找到指定列表中的第一个值?

apache-spark - 如何获取 Kafka 偏移量以进行结构化查询以进行手动可靠的偏移量管理?

scala - 我很想知道 IDEA 的这个烦人的功能是什么 --- 这样我就可以将其关闭

scala - 通过鉴别器使用嵌套的 Coproduct 解码 Case 类

scala - 如何在终端中打印 ApacheSpark RDD 的内容?

python - (PySpark) reduceByKey 后的嵌套列表

json - 结构化流如何动态解析kafka的json数据

sql - 如何在 Spark SQL 中格式化日期?

scala - 单元测试 Spark 数据帧转换链接

scala - 将行转换为 spark scala 中的列表