Map方法sql.row提取 - Spark中的数据类型错误
问题描述:
我有一个.sql.Row
类型RDD
。Map方法sql.row提取 - Spark中的数据类型错误
我使用map
方法从row
解包并创建一个新的RDD
。
这个问题是直接从我在Scala RDD String manipulation中了解到的。
在原来的RDD
,vertices_raw
我有一个字段Metrics
,我使用地图上。
val vertices = vertices_raw.rdd.map(row=> (row.getAs[String]("Metrics").map(_.stripPrefix("name").toLong))
在所得:
error: value stripPrefix is not a member of Char
这同样适用于.drop
方法用于去除name
。
我已经尝试添加toString
试图从Char
转换为String
而没有任何更改。
val vertices = vertices_raw.rdd.map(row=> (row.getAs[String]("Metrics").toString.map(_.stripPrefix("name").toLong))
代替getAs[String]
我也试过getString
。
val vertices = vertices_raw.rdd.map(row=> (row.getString("Metrics").map(_.stripPrefix("name").toLong))
error: type mismatch;
found : String("toid")
required: Int
我实际的问题是我怎么转换从Char
到String
?在执行map
函数之前?
我的根本问题是getAs[String]
究竟是什么意思,如果它不字面意思是get和String格式?我清楚地误解了这一点。
答
您正在对字符串执行映射 - 即要映射字符串的每个字符。如果你只是想打电话给stripPrefix,那就不用地图。
row.getAs[String]("Metrics").stripPrefix("name").toLong