public static void main(String[] args) { String text = "CREATE TABLE if not exists iteblog_06(name structguo:string,sheng:string,shi:string, value string)"; MySqlCreateTableParser mySqlCreateTableParser = new MySqlCreateTableParser(text); SQLCreateTableStatement sqlCreateTableStatement = mySqlCreateTableParser.parseCreateTable(); String tableName = sqlCreateTableStatement.getTableName(); }
Exception in thread "main" com.alibaba.druid.sql.parser.ParserException: syntax error, expect :, actual VARIANT pos 60, line 1, column 54, token VARIANT at com.alibaba.druid.sql.parser.SQLExprParser.accept(SQLExprParser.java:3980) at com.alibaba.druid.sql.parser.SQLExprParser.parseDataType(SQLExprParser.java:3643) at com.alibaba.druid.sql.parser.SQLExprParser.parseDataType(SQLExprParser.java:3557) at com.alibaba.druid.sql.dialect.mysql.parser.MySqlExprParser.parseColumn(MySqlExprParser.java:988) at com.alibaba.druid.sql.dialect.mysql.parser.MySqlCreateTableParser.parseCreateTable(MySqlCreateTableParser.java:272) at com.alibaba.druid.sql.dialect.mysql.parser.MySqlCreateTableParser.parseCreateTable(MySqlCreateTableParser.java:42) at org.example.App.getTableName(App.java:108) at org.example.App.createHbaseTable(App.java:58) at org.example.App.main(App.java:30)
原提问者GitHub用户zhangzichu
看起来是 Hive 对于 Struct 类型的数据不支持,导致出现了不支持的异常。
Hive 支持的数据类型有限,并且对于某些复杂数据类型的支持不够完善。如果您在 Hive 中使用了 Struct 类型的数据,并且遇到了不支持的异常,可以考虑以下两种解决方案:
将 Struct 类型的数据转换为其他 Hive 支持的数据类型。例如,您可以将 Struct 类型的数据拆分为多个字段,并将每个字段的值存储在 Hive 表中。
使用其他的数据存储和处理技术。如果 Hive 不支持您需要处理的数据类型,可以考虑使用其他的数据存储和处理技术,例如 Hadoop MapReduce、Spark 等。这些技术可以更灵活地处理各种类型的数据,并且可以与 Hive 进行集成和交互。
问题已修复,请用新版本
https://github.com/alibaba/druid/releases/tag/1.2.5
原回答者GitHub用户wenshao
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。