Apache spark 无法使用Case类将字符串解析为Int

Apache spark 无法使用Case类将字符串解析为Int,apache-spark,spark-shell,Apache Spark,Spark Shell,有人能帮我找出我到底在哪里丢失了这段代码吗?我无法将电话从字符串解析为整数 case class contactNew(id:Long,name:String,phone:Int,email:String) val contactNewData = Array("1#Avinash#Mob-8885453419#avinashbasetty@gmail.com","2#rajsekhar#Mob-9848022338#raj@yahoo.com","3#kamal#Mob-98032446443

有人能帮我找出我到底在哪里丢失了这段代码吗?我无法将电话从字符串解析为整数

case class contactNew(id:Long,name:String,phone:Int,email:String)
val contactNewData = Array("1#Avinash#Mob-8885453419#avinashbasetty@gmail.com","2#rajsekhar#Mob-9848022338#raj@yahoo.com","3#kamal#Mob-98032446443#kamal@gmail.com")
val contactNewDataToRDD = spark.sparkContext.parallelize(contactNewData)
val contactNewRDD = contactNewDataToRDD.map(l=> {
  val contactArray=l.split("#")
  val MobRegex=contactArray(2).replaceAll("[a-zA-Z/-]","")
  val MobRegex_Int=MobRegex.toInt
  contactNew(contactArray(0).toLong,contactArray(1),MobRegex_Int,contactArray(3))
})
contactNewRDD.collect.foreach(println)

您收到错误,因为最后一个电话号码的大小大于int size。 转换数字太长。它应该会起作用

case class contactNew(id:Long,name:String,phone:Long,email:String)
val contactNewData = 
Array("1#Avinash#Mob8885453419#avinashbasetty@gmail.com",
"2#rajsekhar#Mob-9848022338#raj@yahoo.com",
"3#kamal#Mob-98032446443#kamal@gmail.com")
val contactNewDataToRDD = spark.sparkContext.parallelize(contactNewData)
val contactNewRDD = contactNewDataToRDD.map(l=>
{
val contactArray=l.split("#")
val MobRegex=contactArray(2).replaceAll("[a-zA-Z/-]","")
val MobRegex_Int=MobRegex.toLong
contactNew(contactArray(0).toLong,contactArray(1),MobRegex_Int,contactArray(3))
}                                          
)
contactNewRDD.collect.foreach(println)