开发者社区> 问答> 正文

Hive SQL like方式建表 格式化后执行报错

Druid版本

<dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.2.4</version>
    </dependency>

Hive 版本 1.1.0

原始SQL

create table default.sale_detail_6781 like default.sale_detail_1119 STORED AS parquet

格式化SQL

CREATE TABLE default.sale_detail_6781 STORED AS parquet LIKE default.sale_detail_1119

问题 原始SQL在hive中正常执行, 格式化后报如下错:

org.apache.hive.service.cli.HiveSQLException: Error while compiling statement: FAILED: ParseException line 3:0 missing EOF at 'LIKE' near 'parquet'

格式化使用的接口方法:

String formatSql = SQLUtils.format(sql, "hive");

建议格式化的SQL , STORED AS parquet 放在最后,经测试下面的语句可执行成功.

CREATE TABLE default.sale_detail_6781 LIKE default.sale_detail_1119 STORED AS parquet

使用like 建表只会复制一张已存在hive表的结构,存储格式不会复制,所以这也是需要考虑的一个场景

原提问者GitHub用户chaplinthink

展开
收起
山海行 2023-07-05 18:10:51 76 0
2 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    看起来是在使用 Hive SQL 的 LIKE 方式创建表时,执行格式化后的 SQL 语句时出现了错误。
    如果您在执行格式化后的 SQL 语句时出现了错误,可能是因为 SQL 语句中存在语法错误或者表不存在等问题。您可以尝试以下几个方面进行排查:

    检查 SQL 语句的语法。在执行 SQL 语句前,需要确保 SQL 语句的语法正确,并且符合 Hive SQL 的语法规范。可以使用 SQL 调试工具或者其他方式检查 SQL 语句的语法错误,并进行修正。

    检查表是否存在。在使用 LIKE 方式创建表时,需要确保 existing_table_name 对应的表存在,否则会出现表不存在的错误。可以通过查询数据库元数据或者其他方式进行确认。

    检查 Hive 版本和配置。在执行 Hive SQL 语句时,需要确保 Hive 的版本和配置正确,并且与 SQL 语句相匹配。可以检查 Hive 的日志或者其他方式查看 Hive 的错误信息,并进行修正。

    2023-07-30 20:03:52
    赞同 展开评论 打赏
  • 问题已修复,请用新版本

    https://github.com/alibaba/druid/releases/tag/1.2.5

    原回答者GitHub用户wenshao

    2023-07-06 10:48:05
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载