因为业务要求,需要对Hive表进行delete,在官网查询后,发现update和delete是一类问题。在此总结下如何实现Hive表的delete和update。

首先,先看下官网关于updatedelete的相关说明,使用注意事项也请参考官网说明,这里只介绍如何实现相关功能。

综合上述信息,Hive自0.14版本开始支持update和delete,要执行update和delete的表必须支持ACID,而关于ACID的详细介绍,需要查看Hive Transactions.

经过对Hive Transactions相关内容的分析,我提取出了以下必要信息:

综合上述信息,可以得出以下结论:

如果一个表要实现update和delete功能,该表就必须支持ACID,而支持ACID,就必须满足以下条件:

1、表的存储格式必须是ORC(STORED AS ORC);

2、表必须进行分桶(CLUSTERED BY (col_name, col_name, ...)  INTO num_buckets BUCKETS);

3、Table property中参数transactional必须设定为True(tblproperties('transactional'='true'));

4、以下配置项必须被设定:

Client端:

  • 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
  • hive.compactor.worker.threads – 1
  • hive.txn.manager – org.apache.hadoop.hive.ql.lockmgr.DbTxnManager(经过测试,服务端也需要设定该配置项)

注意:上述配置项必须区分Client端和服务端。在Cloudera Manager上可以分别添加(hive—>配置—>高级),在更新部署配置信息的时候需要勾选部署客户端配置(默认是勾选的)。

大数据谭志坚11个月前#1楼这个文档好,看懂了,服务端,客户端都的配置!我原来只配置了客户端,一直不成功。把服务端配置好后,就可以了。谢谢。
    1.  
      <property>
    2.  
      <name>hive.support.concurrency</name>
    3.  
      <value>true</value>
    4.  
      </property>
    5.  
      <property>
    6.  
      <name>hive.enforce.bucketing</name>
    7.  
      <value>true</value>
    8.  
      </property>
    9.  
      <property>
    10.  
      <name>hive.exec.dynamic.partition.mode</name>
    11.  
      <value>nonstrict</value>
    12.  
      </property>
    13.  
      <property>
    14.  
      <name>hive.txn.manager</name>
    15.  
      <value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value>
    16.  
      </property>
    17.  
      <property>
    18.  
      <name>hive.compactor.initiator.on</name>
    19.  
      <value>true</value>
    20.  
      </property>
    21.  
      <property>
    22.  
      <name>hive.compactor.worker.threads</name>
    23.  
      <value>1</value>
    24.  
      </property>
    25.  
      <property>
    26.  
      <name>hive.in.test</name>
    27.  
      <value>true</value>
    28.  
      </property>

Hive 实现update和delete(转载)的更多相关文章

  1. hive增加Update、Delete支持

    一.配置hive-site.xml二.建表三.操作四.总结 一.配置hive-site.xml CDH版本先进入Hive配置页 选择高级,找到hive-site.xml 的 Hive 客户端高级配置代 ...

  2. Hive支持行级update、delete时遇到的问题

    Hive从0.14版本开始支持事务和行级更新,但缺省是不支持的,需要一些附加的配置.要想支持行级insert.update.delete,需要配置Hive支持事务.(行级的insert好像不配置也能运 ...

  3. hive如何配置支持事务及insert、update、delete

    Hive从0.14版本开始支持事务和行级更新,但缺省是不支持的,需要一些附加的配置.要想支持行级insert.update.delete,需要配置Hive支持事务. 一.Hive具有ACID语义事务的 ...

  4. 转载:MySQL数据库INSERT、UPDATE、DELETE以及REPLACE语句的用法详解

    转自:http://www.jb51.net/article/39199.htm 本篇文章是对MySQL数据库INSERT.UPDATE.DELETE以及REPLACE语句的用法进行了详细的分析介绍, ...

  5. MongoDB入门系列(二):Insert、Update、Delete、Drop

    概述 本章节介绍Insert.Update.Delete.Drop操作基本语法. 环境: Version:3.4 insert insert()基本语法如下: db.collection.insert ...

  6. [转] hive0.14-insert、update、delete操作测试

    FROM : http://blog.csdn.net/hi_box/article/details/40820341 首先用最普通的建表语句建一个表: hive>create table te ...

  7. Hive SQL的编译过程[转载自https://tech.meituan.com/hive-sql-to-mapreduce.html]

    https://tech.meituan.com/hive-sql-to-mapreduce.html Hive是基于Hadoop的一个数据仓库系统,在各大公司都有广泛的应用.美团数据仓库也是基于Hi ...

  8. CDH-hive支持insert、update、delete操作

    开发要求hive支持update操作,搞张临时表测试下,报错如下: 配置hive-site.xml CDH进入hive配置页,选择高级,找到hive-site.xml的HIve客户端高级配置段代码段, ...

  9. Java-MyBatis-MyBatis3-XML映射文件:insert, update 和 delete

    ylbtech-Java-MyBatis-MyBatis3-XML映射文件:insert, update 和 delete 1.返回顶部 1. insert, update 和 delete 数据变更 ...

随机推荐

  1. (二)pdf的构成综述

    引自:https://blog.csdn.net/steve_cui/article/details/81948486 一个pdf文件主要是由4部分构成:文件头.文件体.交叉引用表.文件尾 文件头:用 ...

  2. k8s yaml格式的pod定义文件完整内容

    apiVersion: v1 #必选,版本号,例如v1,版本号必须可以用 kubectl api-versions 查询到 . kind: Pod #必选,Pod metadata: #必选,元数据 ...

  3. Matlab 多项式及其函数

    多项式及其函数 多项式及其函数 Matlab用一维向量表示多项式 例:创建一个通用的一维向量转化为字符串格式的表达式 function s = pprintf(p) %pprintf 该函数可将一维向 ...

  4. C# vb .net实现移除透明度效果

    在.net中,如何简单快捷地实现Photoshop滤镜组中的移除透明度效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 ...

  5. kubernetes第六章--如何访问pod

  6. Qt QListWidget

    以下代码是 List Widget 添加数据项的代码,一般放在构造函数即可. /*********************添加数据项*********************/ QIcon icon1 ...

  7. Tomcat - 控制台乱码

    1.找到${CATALINA_HOME}/conf/logging.properties 2.找到java.util.logging.ConsoleHandler.encoding = UTF-8 修 ...

  8. mysql遇到时区问题的坑(Java解决方案)

    最近项目遇到一个坑,就是server和db之间存在时区问题,本人的db是utc时间, 可以使用代码设置时区来解决,本人这里使用joda三方包,joda蛮好用的,具体用法这里不做详细描述. 先引入pom ...

  9. edgex0.7.1_1.0.1的X86编译和交叉编译

    一. X86编译 1. 安装zeromq库 根据setup script安装: wget https://github.com/zeromq/libzmq/releases/download/v4.2 ...

  10. HTML&CSS基础-边框简写属性

    HTML&CSS基础-边框简写属性 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.HTML源代码 <!DOCTYPE html> <html> ...