Hive 配置单元更新和删除

Hive 配置单元更新和删除,hive,odbc,unixodbc,Hive,Odbc,Unixodbc,我使用的是Hive1.0.0版本、Hadoop2.6.0和Cloudera ODBC驱动程序。我正在尝试从Cloudera HiveOdbc驱动程序更新和删除配置单元数据库中的数据,但它引发了一个错误。这是我的错误 我做了什么 创建: create database geometry; create table odbctest (EmployeeID Int,FirstName String,Designation String, Salary Int,Department String)

我使用的是Hive1.0.0版本、Hadoop2.6.0和Cloudera ODBC驱动程序。我正在尝试从Cloudera HiveOdbc驱动程序更新和删除配置单元数据库中的数据,但它引发了一个错误。这是我的错误

我做了什么

创建:

create database geometry;

create table odbctest (EmployeeID Int,FirstName String,Designation String, Salary Int,Department String) 
clustered by (department)
into 3 buckets
stored as orcfile
TBLPROPERTIES ('transactional'='true');
insert into table geometry.odbctest values(10,'Hive','Hive',0,'B');
表已创建

插入:

create database geometry;

create table odbctest (EmployeeID Int,FirstName String,Designation String, Salary Int,Department String) 
clustered by (department)
into 3 buckets
stored as orcfile
TBLPROPERTIES ('transactional'='true');
insert into table geometry.odbctest values(10,'Hive','Hive',0,'B');
通过传递上述查询,数据将插入到数据库中

更新:

create database geometry;

create table odbctest (EmployeeID Int,FirstName String,Designation String, Salary Int,Department String) 
clustered by (department)
into 3 buckets
stored as orcfile
TBLPROPERTIES ('transactional'='true');
insert into table geometry.odbctest values(10,'Hive','Hive',0,'B');
当我试图更新时,出现以下错误

update geometry.odbctest set salary = 50000 where employeeid = 10;
delete from geometry.odbctest where employeeid=10;
SQL>update geometry.odbctest set salary=50000,其中employeeid=10

不支持[S1000][Cloudera][HiveODBC](55)插入操作 表:HIVE.geometry.odbctest

[ISQL]错误:无法SQLPrepare

删除:

create database geometry;

create table odbctest (EmployeeID Int,FirstName String,Designation String, Salary Int,Department String) 
clustered by (department)
into 3 buckets
stored as orcfile
TBLPROPERTIES ('transactional'='true');
insert into table geometry.odbctest values(10,'Hive','Hive',0,'B');
当我试图删除时,出现以下错误

update geometry.odbctest set salary = 50000 where employeeid = 10;
delete from geometry.odbctest where employeeid=10;
SQL>从geometry.odbctest中删除,其中employeeid=10

[S1000][Cloudera][HiveODBC](55)表不支持插入操作:HIVE.geometry.odbctest

[ISQL]错误:无法SQLPrepare


有人能帮我吗,

您已经正确地完成了两个必需的步骤:

  • ORC格式
  • 带扣桌子
可能的原因是:未包括以下一个或多个配置单元设置:

必须适当设置这些配置参数才能启用 配置单元中的事务支持:

事务支持的完整要求如下:

如果已验证上述设置是否正确,则执行以下操作:

describe extended odbctest;

评估其事务相关特性。

到目前为止,配置单元不支持对HDFS中的数据执行更新和删除操作。

我在使用Cloudera发布的Simba ODBC驱动程序(v 2.5.12.1005 64位)连接到Hive 1.2时遇到了同样的问题。在验证了javadba文章中的所有内容之后,我做了一些额外的挖掘,发现问题是ODBC驱动程序中的一个bug

我通过使用Progress DataDirect驱动程序解决了这个问题,看起来hortonworks发布的驱动程序版本也可以使用(下面两个解决方案的链接)


希望这能帮助那些仍在挣扎的人

您不应该将配置单元视为常规的RDBMS,配置单元更适合对非常大的不可变数据集进行批处理

这是你能找到的

Hadoop是一个批处理系统,Hadoop作业往往具有高性能 延迟,并在作业提交和 行程安排。因此,配置单元查询的延迟通常非常低 高(分钟),即使涉及的数据集非常小(比如几分钟 100兆字节)。因此,它无法与系统进行比较 例如Oracle,在Oracle中,分析是在非常小的范围内进行的 数据量大,但分析的进行更为迭代 迭代之间的响应时间少于几分钟。蜂箱 旨在提供可接受(但不是最佳)的交互延迟 数据浏览、小数据集查询或测试查询

配置单元不是为联机事务处理而设计的,并且不支持 提供实时查询和行级更新。这是最好的使用 在大型不可变数据集(如web日志)上批处理作业


当我在hive上工作时,我已经更新了hive-site.xml中的所有acid属性fine@SreeEedupuganti那么你觉得我的帖子有帮助和/或正确吗?也就是说,您是否使用了解决方案中显示的任何属性?我遇到了类似的问题。我有您列出的所有属性集,表是orc、事务性和带扣的。你知道这是什么原因吗?@craigtb我不能保证一个完整的答案,但是如果你用“描述扩展”的输出给出一个要点,我可以试一试。@javadba扩展描述太长了。有什么方法可以发送给您吗?这在Hive 1.0中已更改