一、配置hive-site.xml

CDH版本先进入Hive配置页



选择高级,找到hive-site.xml 的 Hive 客户端高级配置代码段配置项



点击+号,增加如下配置项

  1. hive.support.concurrency = true
  2. hive.enforce.bucketing = true
  3. hive.exec.dynamic.partition.mode = nonstrict
  4. hive.txn.manager = org.apache.hadoop.hive.ql.lockmgr.DbTxnManager
  5. hive.compactor.initiator.on = true
  6. hive.compactor.worker.threads = 1



然后点击保存更改,分发配置就可以了。

二、建表

如果要支持delete和update,则必须输出是AcidOutputFormat然后必须分桶。

而且目前只有ORCFileformat支持AcidOutputFormat,不仅如此建表时必须指定参数('transactional' = true)

  1. USE test;
  2. DROP TABLE IF EXISTS S1_AC_ACTUAL_PAYDETAIL;
  3. CREATE TABLE IF NOT EXISTS S1_AC_ACTUAL_PAYDETAIL
  4. (
  5. INPUTDATE STRING,
  6. SERIALNO STRING,
  7. PAYDATE STRING,
  8. ACTUALPAYDATE STRING,
  9. CITY STRING,
  10. PRODUCTID STRING,
  11. SUBPRODUCTTYPE STRING,
  12. ISP2P STRING,
  13. ISCANCEL STRING,
  14. CDATE STRING,
  15. PAYTYPE STRING,
  16. ASSETSOWNER STRING,
  17. ASSETSOUTDATE STRING,
  18. CPD DOUBLE,
  19. PAYPRINCIPALAMT BIGINT,
  20. PAYINTEAMT BIGINT,
  21. A2 BIGINT,
  22. A7 BIGINT,
  23. A9 BIGINT,
  24. A10 BIGINT,
  25. A11 BIGINT,
  26. A12 BIGINT,
  27. A17 BIGINT,
  28. A18 BIGINT,
  29. PAYAMT BIGINT,
  30. LOANNO STRING,
  31. CREATEDATE STRING,
  32. CUSTOMERID STRING,
  33. etl_in_dt string
  34. )
  35. CLUSTERED BY (SERIALNO) --根据某个字段分桶
  36. INTO 7 BUCKETS --分为多少个桶
  37. ROW FORMAT DELIMITED
  38. FIELDS TERMINATED BY ','
  39. LINES TERMINATED BY '\n'
  40. STORED AS ORC
  41. LOCATION '/user/hive/test/S1_AC_ACTUAL_PAYDETAIL'
  42. TBLPROPERTIES('transactional'='true');--增加额描述信息,比如最后一次修改信息,最后一个修改人。

注:由于cdh自动的在元数据里面创建了COMPACTION_QUEUE表,所以博客中说的那个问题不存在

三、操作

执行

  1. update test.S1_AC_ACTUAL_PAYDETAIL set city='023' where SERIALNO = '20688947002';

操作100条数据,平均每条花费2秒多,其中执行花费1秒左右。相对还是能接受的。

  1. delete from test.S1_AC_ACTUAL_PAYDETAIL where SERIALNO = '20688947002';

四、总结

  • 1、Hive可以通过修改参数达到修改和删除数据的效果,但是速度远远没有传统关系型数据库快
  • 2、通过ORC的每个task只输出单个文件和自带索引的特性,以及数据的分桶操作,可以将要修改的数据锁定在一个很小的文件块,因此可以做到相对便捷的文件修改操作。因此数据的分桶操作非常重要,通常一些表单信息都会根据具体的表单id进行删除与修改,因此推荐使用表单ID作为分桶字段。
  • 3、频繁的update和delete操作已经违背了hive的初衷。不到万不得已的情况,还是使用增量添加的方式最好。

参考资料:hive0.14-insert、update、delete操作测试

hive增加Update、Delete支持的更多相关文章

  1. Hive 实现update和delete(转载)

    原文链接:https://blog.csdn.net/xueyao0201/article/details/79387647 因为业务要求,需要对Hive表进行delete,在官网查询后,发现upda ...

  2. [Hive - LanguageManual] DML: Load, Insert, Update, Delete

    LanguageManual DML Hive Data Manipulation Language Hive Data Manipulation Language Loading files int ...

  3. mysql数据恢复 insert\update\delete 工具MyFlash

    一.简介MyFlash是由美团点评公司技术工程部开发维护的一个回滚DML操作的工具.该工具通过解析v4版本的binlog,完成回滚操作.相对已有的回滚工具,其增加了更多的过滤选项,让回滚更加容易. 该 ...

  4. 关于MyBatis mapper的insert, update, delete返回值

    这里做了比较清晰的解释: http://mybatis.github.io/mybatis-3/java-api.html SqlSession As mentioned above, the Sql ...

  5. MySQL 误删数据、误更新数据(update,delete忘加where条件)

    MySQL 误操作后数据恢复(update,delete忘加where条件) 关键词:mysql误删数据,mysql误更新数据 转自:https://www.cnblogs.com/gomysql/p ...

  6. insert update delete 语法 以及用法

    insert update delete 被称为 数据定义语句语句 也就是数据的增加 修改 删除 其中不包括查询 譬如: create database -创建数据库 alter database - ...

  7. mybatis select/insert/update/delete

    这里做了比较清晰的解释: http://mybatis.github.io/mybatis-3/java-api.html SqlSession As mentioned above, the Sql ...

  8. ORACLE MERGE INTO UPDATE DELETE 用法

    ORACLE MERGE INTO UPDATE DELETE 用法 使用该MERGE语句从一个或多个源中选择行以进行更新或插入表或视图.您可以指定条件以确定是更新还是插入目标表或视图. 此语句是组合 ...

  9. LINQ体验(9)——LINQ to SQL语句之Insert/Update/Delete操作

    我们继续讲解LINQ to SQL语句,这篇我们来讨论Insert/Update/Delete操作.这个在我们的程序中最为常用了.我们直接看例子. Insert/Update/Delete操作 插入( ...

随机推荐

  1. heartbeat负载均衡详解

    heartbeat高可用软件http://www.linux-ha.org/wiki/Main_Page 1 heartbeat作用通过heartbeat将资源(IP)从一台已经故障的计算机快速转移到 ...

  2. tomcat在centos6+上的自启动脚本

    #!/bin/bash # # tomcat startup script for the Tomcat server # # chkconfig: 345 80 20 # description: ...

  3. 【BZOJ3143】【HNOI2013】游走 && 【BZOJ3270】博物馆 【高斯消元+概率期望】

    刚学完 高斯消元,我们来做几道题吧! T1:[BZOJ3143][HNOI2013]游走 Description 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小 ...

  4. 洛谷 [P3205] 合唱队

    区间DP 手动模拟一下,我们发现本题就是一个左右加数的区间DP #include <iostream> #include <cstdio> #include <cstri ...

  5. 洛谷P3393 逃离僵尸岛

    题目描述 小a住的国家被僵尸侵略了!小a打算逃离到该国唯一的国际空港逃出这个国家. 该国有N个城市,城市之间有道路相连.一共有M条双向道路.保证没有自环和重边. K个城市已经被僵尸控制了,如果贸然闯入 ...

  6. HDU 4474 Yet Another Multiple Problem【2012成都regional K题】 【BFS+一个判断技巧】

    Yet Another Multiple Problem Time Limit: 40000/20000 MS (Java/Others)    Memory Limit: 65536/65536 K ...

  7. Python入门--5--列表

    python没有数组 蛋是有列表 列表里面可以有:整数,浮点数,字符串,对象 没有数组,没有数组,没有数组,不重要的也说三遍!! 一.创建列表 x = ['abc','sas','www']     ...

  8. Laravel 静态资源管理

    <link rel="stylesheet" href="{{ asset('bootstrap/css/bootstrap.min.css') }}" ...

  9. ajax 提交数组,mybatis 数组接受

    function jinxingzhong() { // 配送单编号:psd2017090103 var divHtml = ""; $.ajax({ type: "PO ...

  10. csv文件导出

    参考博客:http://www.cnblogs.com/mingforyou/p/4103132.html 导入jar包javacsv.jar 链接:http://pan.baidu.com/s/1i ...