Map方法sql.row提取 - Spark中的数据类型错误

时间:2016-08-16 14:39:34

标签: string scala apache-spark

我有一个.sql.Row类型RDD

我正在使用map方法从row解压缩并创建新的RDD

这个问题直接来自我在Scala RDD String manipulation中学到的东西。

在原始RDDvertices_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的{​​{1}}方法也是如此。

我尝试添加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究竟是什么意思,如果它没有字面意思得到和以字符串格式?我清楚地误解了这一点。

1 个答案:

答案 0 :(得分:2)

您正在对字符串执行映射 - 该映射将映射到字符串的每个字符串。如果您只想调用stripPrefix,那么只需在没有地图的情况下执行此操作。

row.getAs[String]("Metrics").stripPrefix("name").toLong