使用 java 创建具有约束的配置单元表并使用 jdbc 程序检查配置单元表的列约束

Posted

技术标签:

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

您好,我正在尝试使用 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 程序查找表列的约束。 谢谢 希兹

【问题讨论】:

【参考方案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

【讨论】:

以上是关于使用 java 创建具有约束的配置单元表并使用 jdbc 程序检查配置单元表的列约束的主要内容,如果未能解决你的问题,请参考以下文章

使用 AJAX 解析从 ASP 页面返回的 HTML 表并提取特定单元格

具有自动布局约束的 UITableViewCell 子类大小不正确

如何在没有使用“ROW FORMAT DELIMITER”创建配置单元表的情况下将“|”分隔文件加载到配置单元中

创建impala表并使用java添加数据

Presto 无法查询配置单元表

从另一个配置单元表刷新一个配置单元表