2016-08-16 17 views
0

我有一個.sql.Row類型RDDMap方法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 

我實際的問題是我怎麼轉換從CharString?在執行map函數之前?

我的根本問題是getAs[String]究竟是什麼意思,如果它不字面意思是get和String格式?我清楚地誤解了這一點。

回答

2

您正在對字符串執行映射 - 即要映射字符串的每個字符。如果你只是想打電話給stripPrefix,那就不用地圖。

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