hbase支持普通的sql语句吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hbase支持普通的sql语句吗相关的知识,希望对你有一定的参考价值。

不支持,Hbase不支持普通的SQL语句,它可以使用HBase查询语言(HBase Query Language, HBaseQL)进行查询,HBaseQL可以用来与HBase交互,它是一种基于NoSQL的查询语言,它允许用户与HBase表进行交互,以实现常见的数据库操作,如插入,更新和删除。HBaseQL并不是标准的SQL,而是基于HBase的NoSQL查询语言,它更像是一个替代 SQL的查询语言,但它的语法和概念类似于SQL,容易理解和使用。因此,HBase不支持使用普通的SQL语句来查询。 参考技术A 原生不支持SQL:Hbase是一个非关系型数据库但不支持SQL语句,不过可以通过Phoenix解决,专门为HBase设计的SQL层 原生不支持二级索引:单一RowKey固有的局限性决定了它不可能有效地支持多条查询,只支持按照Rowkey来查询,因此正常情况下对非Rowkey列做查询比较慢。所以,我们一般会选择一个HBase二级索引解决方案,目前比较成熟的方案是Phoenix,此外还可以选择Elasticsearch/Solr等搜索引擎自己设计实现 暂时不能支持Master server的故障切换,当Master死亡后,整个存储系统会挂掉 数据分析能力弱:在HBase之上架设Phoenix或Spark等组件,增强Hbase数据分析处理的能力。 参考技术B 不支持。HBase使用的是NoSQL数据库,它没有实现SQL语句,只能使用HBase自己的查询语言HQL(HBase Query Language)来查询数据。

大数据 常用框架特点

 

 

 

一、大数据框架

 

Impala:hadoop的sql平台、支持hbase/hdfs、支持超大数据、支持多并发、sql支持好、对内存依赖比较严重。需要自己优化,并且有的语句超过内存会报错。

 

 

Spark:各种格式、各种计算(机器学习、图形计算)、可sql、可代码处理、支持scala/java/python语言开发。提供scala/python代码命令行运行、超大数据支持差。

 

 

Kylin:预计算、好优化、高性能、支持mr、spark、基于时间的增量更新、流式更新、数据源有hive/kafka、提供开发用的管理台是一套开发系统。由于有预计算、所以其他各个模块独立,能支持高并发。可以直接作为软件系统的数据源。

 

 

Phoenix:sql on hbase、快

 

 

Hbase:key/value、强一致性、不丢数据

 

Cassandra:弱一致性,数据可能丢失。可用性高、读写性能比hbase高、被facebook放弃了。

 

 

 

案例1:特别适合大数据sql查询

数据存入hbase,把hbase表结构隐射到hive,用Impala进行sql查询。

优点有三个:

     A、Impala支持hdfs/hbase两个适用度比Phoenix更广,并且更稳定。

     B、数据在hbase中,对数据的操作得以进行,hdfs中的数据是没法行级更新,删除的。并且速度也比hdfs快。无需字段分割解析,直接读取。

     C、能在hive中为表结构,给开发和后面换用其他框架留下很大方便。

 

 

案例2:Zeppelin特别适合spark机器学习

Spark交互式开发平台

Zeppelin整合了Spark,Markdown,Shell,Angular等引擎,集成了数据分析和可视化等功能

提供了sql查询,和scala/python分析代码调试功能。

http://blog.csdn.net/guohecang/article/details/51324390。

 

 

案例3:Kylin:全功能大数据sql查询平台

预计算、好优化、高性能、支持mr、sparksql、基于时间的增量更新、流式更新、有开发管理台、数据源有hive/kafka。

由于有预计算、所以其他各个模块独立,能支持高并发。可以直接作为软件系统的数据源。

 

 

案例4

Presto 玩的更绝,全程在内存中倒腾,需要对各个步骤下对象数据规模做到完全精细的把控。优势是速度快,支持的数据源多。

 

 

 

总结::

  • MPP架构的系统(Presto/Impala/SparkSQL/Drill等)有很好的数据量和灵活性支持,但是对响应时间是没有保证的。当数据量和计算复杂度增加后,响应时间会变慢,从秒级到分钟级,甚至小时级都有可能。
  • 搜索引擎架构的系统(Elasticsearch等)相对比MPP系统,在入库时将数据转换为倒排索引,采用Scatter-Gather计算模型,牺牲了灵活性换取很好的性能,在搜索类查询上能做到亚秒级响应。但是对于扫描聚合为主的查询,随着处理数据量的增加,响应时间也会退化到分钟级。
  • 预计算系统(Druid/Kylin等)则在入库时对数据进行预聚合,进一步牺牲灵活性换取性能,以实现对超大数据集的秒级响应。

 

1. kylin 预计算。用户指定dimensions和要计算的metric,kylin通过MR将结果保存在HBase中,后续读取直接读HBase。适合那种业务清楚的知道自己要分析什么的场景。查询模式比较固定,只不过所查看的时间不同的场景。注意的点是要避免维度灾难。

 

2. presto java8写的,代码质量非常高。设计:纯内存,没有容错,一个task失败就整个query fail。需要注意调整内存相关,线程数等参数,容易OOM。benchmark还行。支持标准SQL

 

3.Spark sql 相对更‘原生‘一些,单纯的通用框架,和上面两位并不是同一层面上的东西。

 


 

 

 

 

二、深度学习框架:

 

TensorFlow:google开源的,当前版本已经有高级API、可视化工具、GPU支持、异步执行

 

 

 

DeepLearning4J:(DL4J)是一套基于Java语言的神经网络工具包,可以构建、定型和部署神经网络。DL4J与Hadoop和Spark集成,支持分布式CPU和GPU。

 

 

 

Keras:

 Keras是一个高层神经网络API,Keras由纯Python编写而成并基Tensorflow或Theano。Keras 为支持快速实验而生,能够把你的idea迅速转换为结果,如果你有如下需求,请选择Keras:

简易和快速的原型设计(keras具有高度模块化,极简,和可扩充特性)

支持CNN和RNN,或二者的结合

无缝CPU和GPU切换

 

 

 

Keras和DDPG

 

 

 

 

 


以上是关于hbase支持普通的sql语句吗的主要内容,如果未能解决你的问题,请参考以下文章

Hbase能模糊查询吗,类似like

SQL SERVER和ORACLE中SQL语句一样吗?

sqlwhere后可以有多个条件后再嵌套吗

sql语句写在XML里面是一种框架吗?

sql语句太长,能否拆开执行

SQL概述