背景故事
先看报错信息:
mismatched input ‘-’ expecting ‘:’

报错的意思就是说,在这个表里面,字段名中存在特殊符号“-”,无法解析报错。
这个问题会发生在CDH的spark中。如果不是CDH的spark版本的程序,可以跳过此文章。
解决方案:
不要使用CDH版本的spark就好了。比如我这里出现报错的时候,使用的版本是2.4.0-cdh6.1.1 那么把这个版本修改为2.4.0就好了。
过程分析
过程早就分析完了,下面写一篇结果:
环境版本
- spark-sql_2.11
2.4.0-cdh6.1.1 - spark-hive_2.11
2.4.0-cdh6.1.1
测试数据准备
SparkSession spark = SparkSession.builder().master("local").getOrCreate();
ArrayList<Row> rows = new ArrayList<>();
for (int i = 0; i < 4; i++) {
rows.add(RowFactory.create(1, "张三", 18,"12345678"));

博客讲述了在CDH的Spark 2.4.0-cdh6.1.1版本中,由于字段名包含特殊字符'-'导致的mismatched input错误。解决方案是升级到更高版本。文章分析了报错原因,指出在低版本Spark中,类在解析字段名时未添加反引号,导致词法分析失败。建议使用支持特殊字符的Spark版本来解决此问题。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



