scala & spark实战
转载java.lang.Long is not a valid external type for schema of string
java.lang.RuntimeException: Error while encoding: java.lang.RuntimeException: java.lang.String is not a valid external type for schema of bigint
原代码:
val rddStatsEcSubsDay4G = sc.textFile(path + "test").map(_.split(","))
.map(r => Row(r(0), r(1), DateTimeTool.toTimestamp(r(2), pattern)))
sqlContext.createDataFrame(rddStatsEcSubsDay4G, Schema.TEST)
map类型和schema类型不一致导致问题,Schema中定义为Long,但是map的时候映射为String,这里只要把r(1)变为r(1).toLong即可。
java.lang.IllegalArgumentException: Invalid format: "2016-11-22 15:42:42" is malformed at "-11-22 15:42:42"
数据提供的格式yyyy-MM-dd HH:mm:ss和map中定义的DateTimeTool.toDate(r(8), pattern)pattern不一致导致(源代码中pattern中是"yyyy/MM/dd HH:mm:ss"),根据错误提示可以知道,只是匹配到了年,之后格式无法匹配
java.lang.RuntimeException: Error while encoding: java.lang.RuntimeException: java.sql.Date is not a valid external type for schema of timestamp
因为在TestBase中定义这在map的时候将某个字段映射为Date:
val rddGroupInfo = sc.textFile(path + "cm_cu_groupinfo")
.map(_.replaceAll("null", "0"))
.map(_.split(",")).map(r => Row(r(0), r(1), r(2), r(3), r(4), r(5), r(6),
DateTimeTool.toDate(r(7), pattern), DateTimeTool.toDate(r(8), pattern)))
加粗部分修改为toTimestamp即可,还是map类型和schema中类型不一致造成
java.lang.ArrayIndexOutOfBoundsException: 22
发现原来是23,24列都为null,因为没有填充null导致
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
上一篇:vs code 安装Scala
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Scala 运算符Scala
-
IDEA开发Spark应用实战(Scala)
实战IDEA开发Scala版的Spark应用
spark 插入图片 scala -
Spark-Scala
增加scala插件
Kafka html scala 公众号 -
Scala实践Spark(四)Spark进阶
文章目录累加器广播变量基于分区操作与外部程序的管道RDD的操作累加器共享变量,
Spark 数据 迭代器 创建对象 -
Scala实践Spark(一)
1024快乐!!!基本以下基于spark-shellscala> val lines = sc.textFile("file:///home/hadoop
Scala Spark scala spark apache