【问题标题】:creating a hive table with connstraints using java and check column constraints of a hive table using a jdbc program使用 java 创建具有约束的配置单元表并使用 jdbc 程序检查配置单元表的列约束
【发布时间】:2026-01-21 02:35:02
【问题描述】:

您好,我正在尝试使用 jdbc 创建一个带有一些约束的配置单元表,这给了我一个错误 String sql1="CREATE TABLE sample_hive_table_2 (key1 int PRIMARY KEY ,value1 string)"; System.out.println(sql1); res = stmt.executeQuery(sql1); 线程“main”java.sql.SQLException 中的异常:查询返回非零代码:40000,原因:FAILED:ParseException 行 1:43 不匹配输入 'PRIMARY' 期望)在创建表语句中的 'int' 附近

at org.apache.hadoop.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:194)

我需要做两件事 1) 创建一个带有约束的表 2) 使用 jdbc 程序查找表列的约束。 谢谢 希兹

【问题讨论】:

    标签: java jdbc hive


    【解决方案1】:

    Hive 表没有约束!

    Hive 是一个基于 Hadoop 的数据仓库基础架构。 Hadoop 为商品硬件上的数据存储和处理(使用 map-reduce 编程范式)提供了大规模的横向扩展和容错能力。

    Hive 旨在实现对大量数据的轻松数据汇总、临时查询和分析。它提供了一种名为 Hive QL 的简单查询语言,该语言基于 SQL,使熟悉 SQL 的用户能够轻松地进行即席查询、汇总和数据分析。同时,Hive QL 还允许传统的 map/reduce 程序员能够插入他们的自定义映射器和化简器,以进行语言的内置功能可能不支持的更复杂的分析。

    请参考 https://cwiki.apache.org/confluence/display/Hive/GettingStarted#GettingStarted-CreatingHiveTables 获取 Hive 表 DDL

    【讨论】:

      【解决方案2】:

      Hive,没有主键的概念。

      【讨论】:

        【解决方案3】:

        Hive 实际上有主键的概念,如下所示,您可以看到,不幸的是,它没有验证。

        : [, PRIMARY KEY (col_name, ...) DISABLE NOVALIDATE ]
          [, CONSTRAINT constraint_name FOREIGN KEY (col_name, ...) REFERENCES
          table_name(col_name, ...) DISABLE NOVALIDATE 
        

        https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL

        【讨论】: