Phoenix系列:原子的Upsert】的更多相关文章

Phoenix的插入语句是Upsert,Update和Insert的组合语义.即,如果数据表中没有这条记录那么插入这条记录,如果有则更新.判断是否存在相同的数据是使用ON DUPLICATE KEY来验证的,这里的KEY就是建表时候的主键(PRIMARY KEY).和Oracle的Merge Into以及MySQL的Insert …on duplicate key 是类似的功能.ON DUPLICATE KEY这个语法要到Phoenix 4.9之后才有.这个功能把HBase的Increment和…
原文地址:https://cloud.tencent.com/developer/article/1498057 来源: 云栖社区 作者: 瑾谦 By 大数据技术与架构 文章简介:Phoenix是一个开源的HBASE SQL层.它不仅可以使用标准的JDBC API替代HBASE client API创建表,插入和查询HBASE,也支持二级索引.事物以及多种SQL层优化. 此系列文章将会从Phoenix的语法和功能特性.相关工具.实践经验以及应用案例多方面从浅入深的阐述.希望对Phoenix入门.…
上一篇介绍了Phoenix基于HBase的二级索引的基本知识,这一篇介绍一下和索引相关的一致性和优化相关内容. 一致性的保证 Phoenix客户端在成功提交一个操作并且得到成功响应后,就代表你所做的操作已经成功应用到原表和相关的索引表中.换句话说,索引表的维护和处理原表数据是同步的,并且各自是强一致性保证的.但是因为索引表和原表是在不同的表中,根据表的属性和索引的类型,当服务端崩溃导致一次提交失败时,原表和索引表中的数据就会有一些变化.所以在使用二级索引的时候,就要根据需求个用例充分考虑. 下面…
Phoenix使用HBase作为后端存储,对于HBase来说,我们通常使用字典序的RowKey来快速访问数据,除此之外,也可以使用自定义的Filter来搜索数据,但是它是基于全表扫描的.而Phoenix提供的二级索引是可以避开全表扫描,是在HBase中快速查找或批量检索数据的另一个选择.下面的例子使用如下表进行测试: ) ), age INTEGER, createtime DATE) 本文的SQL Client是SQuirrel 3.7.1. 覆盖索引 Covered Indexes Phoe…
1.phoenix简介 Apache Phoenix是构建在HBase之上的关系型数据库层,作为内嵌的客户端JDBC驱动用以对HBase中的数据进行低延迟访问.Apache Phoenix会将用户编写的sql查询编译为一系列的scan操作,最终产生通用的JDBC结果集返回给客户端.数据表的元数据存储在HBase的表中被会标记版本号,所以进行查询的时候会自动选择正确的schema.直接使用HBase的API,结合协处理器(coprocessor)和自定义的过滤器的话,小范围的查询在毫秒级响应,千万…
幂等性的一个要求是多次操作的结果一致.对于update操作,多次直接的结果都是最后update的值,是满足需求的. 但对于insert,如果已经插入,第二次会报错,duplicate error, 主键重复或者unique key duplicate.所以需要做一下处理. 最简单的就是,try-catch,当报错的时候,调用update去更新,或者策略更简单点,直接返回就行,不需要更新,以第一条为准. PostgreSQL从9.5之后就提供了原子的upsert语法: 不存在则插入,发生冲突可以u…
Hadoop生态圈-phoenix完全分布式部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. phoenix只是一个插件,我们可以用hive给hbase套上一个JDBC壳,但是你有没有体会到Hive执行SQL语句是很慢的,因此我们采用phoenix插件的方式给hbase套上JDBC的壳. 一.Phoenix简介 1>.其实Phoenix可以看成是在hbase的hive,它是使用SQL方式访问HBase数据: 2>.内置多种协处理器实现,轻松实现二级索引和聚合查询: 二.部…
1. 介绍 Phoenix 是 Salesforce.com 开源的一个 Java 中间件,可以让开发者在Apache HBase 上执行 SQL 查询.Phoenix完全使用Java编写,代码位于 GitHub 上,并且提供了一个客户端可嵌入的 JDBC 驱动. 根据项目所述,Phoenix 被 Salesforce.com 内部使用,对于简单的低延迟查询,其量级为毫秒:对于百万级别的行数来说,其量级为秒.Phoenix 并不是像 HBase 那样用于 map-reduce job 的,而是通…
序列作为标准SQL特性,允许生成递增的序列并应用在典型的ID中.为了创建一个序列,可以使用: 0:jdbc:phoenix:SZB-L0023780:2181:/hbase114> CREATE SEQUENCE my_sequence; 这将创建一个序列,初始化值为1,步长大小为1,序列生成器的值达到限制值后不循环,缓存定义存放序列的100个值(此值由phoenix.sequence.cacheSize决定). 在session中,缓存序列的值可以提升性能,因为我们不需要向服务器索要更多的序列…
本篇我们将介绍phoenix的一些基本操作. 1. 如何使用Phoenix输出Hello World? 1.1 使用sqlline终端命令 sqlline.py SZB-L0023780:2181:/hbase114 0:jdbc:phoenix:SZB-L0023780:2181:/hbase114> create table test (mykey integernot null primary key, mycolumn varchar); 0:jdbc:phoenix:SZB-L0023…