使用 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 子类大小不正确