一、配置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. 九度oj 题目1014:排名

    题目描述:     今天的上机考试虽然有实时的Ranklist,但上面的排名只是根据完成的题数排序,没有考虑每题的分值,所以并不是最后的排名.给定录取分数线,请你写程序找出最后通过分数线的考生,并将他 ...

  2. POJ 1606 Jugs

    Jugs Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4280   Accepted: 2533   Special Ju ...

  3. response.sendRedirect(location)与rd.forward()区别

    在Java Web开发中,经常会用到跳转页面的方法,一般有下面两种方法. HttpServletResponse response = new HttpServletResponse(); respo ...

  4. nmon性能分析工具(生成图表)

    1. nmon性能结果生成报告工具下载地址: https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/Power% ...

  5. uva 11178二维几何(点与直线、点积叉积)

    Problem D Morley’s Theorem Input: Standard Input Output: Standard Output Morley’s theorem states tha ...

  6. miller_rabin + pollard_rho模版

    #include<stdio.h> #include<stdlib.h> #include<time.h> #include<math.h> #incl ...

  7. Codeforces 271D - Good Substrings [字典树]

    传送门 D. Good Substrings time limit per test 2 seconds memory limit per test 512 megabytes input stand ...

  8. flowable资料

    flowable-modeler画流程图:https://www.youtube.com/watch?v=0pqD50pySJg 这个视频跳过创建用户那一步了:https://www.youtube. ...

  9. 表单form-input标签禁止聚焦输入

    1.input标签禁止聚焦输入(针对小程序) <input type="text" disabled /> input标签禁止聚焦输入(针对网页html) 1).< ...

  10. disruptor 核心链路应用场景

    核心链路一般比较复杂并且需要考虑:服务之间相互依赖性.流程能够走完.人员的变动等情况 要考虑:兜底.补偿. 常见解决方案是:1)完全解耦 2)模板模式 其他解决方案:1)有限状态机框架:spring- ...