如何将org.apache.spark.sql.Column转换为长或字符串等数据类型



我是Scala和Spark的新手。我正在尝试从Spark SQL加载数据生成graphX顶点,但我面临着一个错误,我不知道如何解决。这是代码:

val vRDD: RDD[(VertexId, String)] = spark.sparkContext.parallelize(Seq(spark.table("sw")))
.map(row => (row("id"), row("title_value")))

错误如下:

<console>:36: error: type mismatch;
found   : org.apache.spark.sql.Column
required: org.apache.spark.graphx.VertexId
(which expands to)  Long
val vRDD: RDD[(VertexId, String)] = spark.sparkContext.parallelize(Seq(spark.table("sw")))
.map(row => (row("id"), row("title_value")))

错误信息是正确的,您正在返回列。您可以使用以下命令将这些值从列中取出:

spark.sparkContext.parallelize(Seq(spark.table("testme")))
.map(row => (row("id").asInstanceOf[Long],row("name").toString))

或者:

spark.sparkContext.parallelize(Seq(spark.table("testme")))
.map(row => (row("id").asInstanceOf[VertexId],row("name").asInstanceOf[String]))

最新更新