我正在使用Hive 1.0.0版本和Hadoop 2.6.0以及Cloudera ODBC驱动程序。我试图从Cloudera HiveOdbc Driver更新和删除hive数据库中的数据,它会抛出一个错误。这是我的错误。
我做了什么?
创建
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;
SQL> update geometry.odbctest set salary = 50000 where employeeid = 10;
[S1000] [Cloudera] [HiveODBC](55)不支持插入操作 表:HIVE.geometry.odbctest
[ISQL]错误:无法SQLPrepare
删除:
当我尝试删除以下错误时
delete from geometry.odbctest where employeeid=10;
SQL>从geometry.odbctest中删除employeeid = 10;
[S1000] [Cloudera] [HiveODBC](55)插入操作不支持表:HIVE.geometry.odbctest
[ISQL]错误:无法SQLPrepare
任何人都可以帮助我,
答案 0 :(得分:3)
您已正确完成了几项必要步骤:
可能的原因是:未包含以下一个或多个配置单元:
必须适当设置这些配置参数才能打开 Hive中的事务支持:
hive.support.concurrency – true
hive.enforce.bucketing – true
hive.exec.dynamic.partition.mode – nonstrict
hive.txn.manager – org.apache.hadoop.hive.ql.lockmgr.DbTxnManager
hive.compactor.initiator.on – true (for exactly one instance of the Thrift metastore service)
hive.compactor.worker.threads – a positive number on at least one instance of the Thrift metastore service
交易支持的完整要求如下:https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions
如果您已验证上述设置已就绪,请执行
describe extended odbctest;
评估其与交易相关的特征。
答案 1 :(得分:1)
当使用Cloudera(v 2.5.12.1005 64位)分发的Simba ODBC驱动程序连接到Hive 1.2时,我偶然发现了同样的问题。在验证了javadba帖子中的所有内容之后,我做了一些额外的挖掘,发现问题是ODBC驱动程序中的一个错误。
我能够通过使用Progress DataDirect驱动程序解决问题,看起来hortonworks分发的驱动程序版本也可以工作(链接到下面的两个解决方案)。
https://www.progress.com/data-sources/apache-hive-drivers-for-odbc-and-jdbc http://hortonworks.com/hdp/addons/
希望能帮助任何可能仍在努力的人!
答案 2 :(得分:0)
您不应该将Hive视为常规RDBMS,Hive更适合对非常大的不可变数据集进行批处理。
以下是enter link description here
的内容Hadoop是一个批处理系统,Hadoop的工作往往很高 延迟并在作业提交中产生大量开销 调度。因此,Hive查询的延迟通常很大 即使所涉及的数据集非常小(例如几个),也要高(分钟) 百兆字节)。因此,它无法与系统进行比较 例如Oracle,其中分析的范围要小得多 数据量,但分析进行了更多的迭代 迭代之间的响应时间少于几分钟。蜂巢 旨在为交互式提供可接受的(但不是最佳的)延迟 数据浏览,查询小数据集或测试查询。
Hive不是为在线交易处理而设计的,不是 提供实时查询和行级更新。它最适合用于 批量作业超过大量不可变数据(如Web日志)。
答案 3 :(得分:-1)
截至目前,Hive不支持对HDFS中的数据进行更新和删除操作。 https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions