摘要: 云HBASE上Phoenix支持的DML语法 从一个或者多个表中查询数据。LIMIT(或者FETCH FIRST) 在ORDER BY子句后将转换为top-N查询。

云HBASE上Phoenix支持的DML

  1. select
  2. upsert values
  3. upsert select
  4. delete

1. SELECT

从一个或者多个表中查询数据。
LIMIT(或者FETCH FIRST) 在ORDER BY子句后将转换为top-N查询。
OFFSET子句指定返回查询结果前跳过的行数。

示例

SELECT * FROM TEST LIMIT 1000;
SELECT * FROM TEST LIMIT 1000 OFFSET 100;
SELECT full_name FROM SALES_PERSON WHERE ranking >= 5.0
UNION ALL SELECT reviewer_name FROM
CUSTOMER_REVIEW WHERE score >= 8.0

2. UPSERT VALUES

此处upsert语义有异于标准SQL中的Insert,当写入值不存在时,表示写入数据,否则更新数据。其中列的声明是可以省略的,当省略时,values指定值的顺序和目标表中schema声明列的顺序需要一致。

ON DUPLICATE KEY是4.9版本中的功能,表示upsert原子写入的语义,在写入性能上弱于非原子语义。相同的row在同一batch中按照执行顺序写入。

示例

UPSERT INTO TEST VALUES('foo','bar',3);
UPSERT INTO TEST(NAME,ID) VALUES('foo',123);
UPSERT INTO TEST(ID, COUNTER) VALUES(123, 0) ON DUPLICATE KEY UPDATE COUNTER = COUNTER + 1;
UPSERT INTO TEST(ID, MY_COL) VALUES(123, 0) ON DUPLICATE KEY IGNORE;

3. UPSERT SELECT

从另外一张表中读取数据写入到目标表中,如果数据存在则更新,否则插入数据。插入目标表的值顺序和查询表指定查询字段一致。当auto commit被打开并且select子句没有聚合时,写入目标表这个过程是在server端完成的,否则查询的数据会先缓存在客户端再写入目标表中(phoenix.mutate.upsertBatchSize表示从客户端一次commit的行数,默认10000行)。

示例

UPSERT INTO test.targetTable(col1, col2) SELECT col3, col4 FROM test.sourceTable WHERE col5 < 100
UPSERT INTO foo SELECT * FROM bar;

4. DELETE

删除选定的列。如果auto commit打开,删除操作将在server端执行。

示例

DELETE FROM TABLENAME;
DELETE FROM TABLENAME WHERE PK=123;
DELETE FROM TABLENAME WHERE NAME LIKE '%';

References

转自:https://yq.aliyun.com/articles/531683


交流

如果大家对HBase有兴趣,致力于使用HBase解决实际的问题,欢迎加入Hbase技术社区群交流:

微信HBase技术社区群,假如微信群加不了,可以加秘书微信: SH_425 ,然后邀请您。

​  钉钉HBase技术社区群

最新文章

  1. LeetCode-Combinations
  2. 蓝灯(lantern)在服务器(vps)上运行
  3. bzoj-3170 3170: [Tjoi 2013]松鼠聚会(计算几何)
  4. C# HttpWebRequest提交数据方式浅析
  5. .NET Core 在Visual Studio 2015 下的使用-MSDN
  6. Nginx启动SSL功能,并进行功能优化,你看这个就足够了
  7. SVM整理
  8. mysql 数据sqoop到hive 步骤
  9. 【 .NET 面向对象程序设计进阶》】【 《.NET 面向对象编程基础》】【《正则表达式助手》】
  10. StyleCop中有一些官方自己写好的检测规则下面就是英文的解释
  11. [转]从入门到精通: 最小费用流的“zkw算法”
  12. poj2155一个二维树状数组
  13. access窗体最大化到软件大小
  14. JavaScript异步加载的三种方式——async和defer、动态创建script
  15. python与RabbitMQ
  16. python_01
  17. java学习(五)
  18. Java中的位运算符
  19. SQL Server 用户&#39;NT AUTHORITY\IUSR&#39; 登录失败
  20. jsonrpc使用

热门文章

  1. json键的不能像值一样拼写的问题
  2. iOS-开发者账号失效后是否还可以打包
  3. AC日记——飞行员配对方案问题 洛谷 P2756
  4. React-Native Navigator 过渡动画卡顿的解决方案
  5. (6)C#事务处理
  6. Java爬虫系列二:使用HttpClient抓取页面HTML
  7. RabbitMQ 消费端限流、TTL、死信队列
  8. 1.搭建maven,eclipse创建maven项目
  9. POJ2104Kth Number
  10. mysql InnoDb存储引擎索引