包含phonixjava的词条
本篇文章给大家谈谈phonixjava,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、Apache Phoenix(一)答疑
- 2、java代码查询phoenix怎么写
- 3、Phoenix程序如何加载hbase-site.xml
- 4、大数据学习需要哪些课程?
- 5、大数据平台最核心的软件是
Apache Phoenix(一)答疑
创建test.java 文件包含如下内容:
在命令行中编译和执行
Phoenix Thick驱动的JDBC的URL格式如下([]内的元素可选择的)
最简单的例子:
最复杂的例子:
请注意,URL中的每个可选元素都需要前面所有可选元素。例如,去指定Hbase的zk节点,那么zk的端口必须是指定的。
这些信息最初包含在 该页 。
Phoenix Thin驱动(与Phoenix查询服务一起使用)JDBC格式如下:
这里暴露了数个key供客户端使用。最经常使用的key为 url 和 serialization 。url key直接影响到需要查询的Phoenix查询服务器的地址。
最简单的URL例子:
非常复杂的URL例子:
这里记录着所有有关于Thin 客户端JDBC URL涉及到的支持项,可以参考 Apache Avatica documentation 和 Query Server Documentation 。
查看 相关例子 。
CSV数据可以批量导入通过psql的通用功能。一般插入的速度在20K-50K行数据每秒。(取决于一行数据有多大)。
创建表例子:
插入数据例子:
你可以创建Phoenix 表(table)和视图(view)通过 CREATE TABLE/CREATE VIEW 在已存在的HBase表上执行DLL语句。两种情况下都不会改变Hbase的元数据。对于 CREATE TABLE ,我们会创建任何不存在的元数据(table,column families)。我们会增加空键在每一行,所以查询的行为符合预期(不需要所有的列都进行扫描)。
需要注意的是字节的序列化必须匹配Phoenix的字节序列化。比如varchar、char和unsigned_ 类型,我们使用Hbase字节方法。char类型预期只有单字节字符和无符号类型预期值大于或者等于0。 对于有符号的类型(tinyint,smallint,integer 和bigint),phoenix会翻转第一个字节,这样负值会在正值之前排序。 因为Hbase排序row key按照ASCII正序排列,负值的第一位是1 而正值的第一位是0,那么负值大于正值,党我们不进行第一位翻转时。所以你存储整数时通过Hbase本地API接口和想通过Phoenix访问整数,确认你的数据类型是否是无符号类型。
我们复合row key可以将简单的值进行拼接在一起,在可变长类型上使用0字节作为分隔符。
如果你创建Hbase表如下:
如果你已经有了一张带有名称为't1'和列簇为'f1'的Hbase表。那么请记住,在Hbase中你不用对可能的键值和row key结构进行建模。这是你在phoenix指定的表和列簇之外的信息。所以在phoenix,你不需要像这样创建view:
这个‘pk’列定义,你的row key是varchar类型(类似字符串),而'f1'.val列定义你的Hbase表包含键值形式和列成员及列限定符为'f1'.val还有他们的类型为varchar。
注意,你不需要使用双引号,当你创建你的hbase表包含所有的大写名称(Phoenix会标准化字符串,将字符串转大写)。比如:
你可以这样创建phoenix视图:
或者如果你创建了新的hbase表,不需要借助hbase shell,直接在phoenix操作。
注意:理想情况下4核CPU的16个region server,可以选择salt buckets在32-64最佳性能。
始于Phoenix 2.1版本,Phoenix开始支持索引在可变和不可变的数据中。注意,Phoenix在2.0.x中仅支持不可变数据的索引。索引写性能在不可变索引表中,稍微快一些于可变数据表,不可变数据表即是数据不支持更新。
例子:
更新行信息在test表中,Phoenix查询优化器会选择正确的索引去使用。你可以查看 explain plan 如果Phoenix使用这个索引表。你还可以在Phoenix查询中给出使用特定索引的 提示 。
除非查询中使用到的所有列都在二级索引中,否作不会使用二级索引(作为直接索引,或者覆盖索引)。构成数据表中的主键全部列都会自动包含在索引中。
在lastname不是索引或者覆盖所有一部分时,索引是没有被使用到。这点可以在 "explain plan" 中被证实。在创建索引时固定lastname字段存在索引中一部分,或者时覆盖索引的覆盖字段。
例子:
Phoenix速度非常快,全表扫描100M的数据,通常情况下在20秒内完成(中等规模的集群上的小表)。如果查询包含到关键列的过滤器,则降低到毫秒级。你可以添加索引在导致性能等同于过滤键的列上,使用索引列作为键的一部分复制表。
为什么Phoenix即使做了全扫描,速度依然快:
检阅Anil Gupta的优秀 文章 。
Hadoop2的配置存在Phoenix的pom.xml中即可。
在默认情况下,Phoenix让Hbase管理时间戳,并只让你查看最后的版本数据。但是,Phoenix也给用户提供支持任意的时间戳。要做到这一点,使用连接属性"CurrentSCN",像这样:
上面的操作等同于Hbase API中的:
通过指定CurrentSCN,你可以告诉Phoenix。所有东西在这次连接中按该时间戳被完成。注意的是,这也适用于对连接执行的查询。举个例子,一个查询在myTable表的数据是不会看到刚插入的数据,因为它只看到创建连接时指定CurrentSCN属性之前的数据。这样提供了一种类似于快照的功能,或者是时间点查询。
请记住,创建个新的连接不是一个很昂贵的操作。相同的底层Hbase的连接用于全部连接的相同的集群,所以或多或少实例出一些对象。
RANGE SCAN :意味着只扫描表中一部分数据。如果使用主键约束中的一个或者多个组成主键的列会出现这种情况。没有过滤PK列的查询,例子: select * from test where pk2='x' and pk3='y'; 将会出现全扫描,然而在 select * from test where pk1='x' and pk2='y'; 中却是范围扫描(range scan)。注意,你可以添加二级索引在"pk2"和"pk3"列上,会触发范围扫描(range scan)在第一次查询中。
DEGENERATE SCAN :意味着一个查询不能返回行数据。如果我们决定在编译时完成。我们甚至不需要运行扫描。
FULL SCAN :意味着所有行都被扫描到。(如果你有一个where子句,可能会应用到一个过滤器)
SKIP SCAN :将扫描一个表中的子集或者全部行。无论如何它将会根据过滤器跳过大分组的行。可以查看 博客 了解更多。如果主键上没有过滤器的列,那我们就不做SKIP SCAN,但是你可以强制SKIP SCAN通过使用/+ SKIP_SCAN/去命中。在一些条件下,也就是说当你的主键基数比较少时,它将会更有效超过FULL SCAN。
不,它不是必须的Phoenix jDBC连接池。
Phoenix的连接对象时不同大部分的JDBC连接,原因在于底层是Hbase的连接。Phoenix连接对象在设计时就是为了更精细便宜的代价去创建。如果Phoenix的连接被再利用,底层的HBase连接可能并不总是由前一个用户保持在健康状态。更好的方式是去创建一个新的Phoenix连接,保证避免潜在的问题。
实行Phoenix连接池可以简单的创建实例化委派,对外部而言,创建出新的Phoenix连接,实际是需要时从池中获取,对外部而言的关闭,实际是返回到池中去,可以参考 Phoenix-2388 。
空键值或者伪键值(_01列限定符)必须的,去保证列都有有效的在全部行中。
数据存储在Hbase是以键值对形式存在,意味着存储每个列值完整的行键。这还意味着,除非至少存储了一个列,否则根本不存储行键。
现在考虑到JDBC的行存在int类型的主键,和若干列可能是空(null)的。为了可以存储主键,键值必须去存储去展示这行数据的全部(现在的时间戳,考虑的时间戳版本)。你会注意到这些列是空列。这允许执行“SELECT * FROM TABLE”并接收所有行的记录,即使那些非pk列为空的记录也是如此。
即使对于某些(或所有)记录只有一个列为空,也会出现相同的问题。在Phoenix上的扫描将包括空列,以确保只包含主键的行(所有非键列都为空)将包含在扫描结果中。
java代码查询phoenix怎么写
java代码查询phoenix怎么写
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("输入0—9之间的任意数:");
int n;
n = in.nextInt();
int b = Integer.toString(n).length();
System.out.println("你输入的数字位数为:" + b);
}
}
Phoenix程序如何加载hbase-site.xml
使用java或者scala写一个通过JDBC方式连接Phoenix进行查询的程序时,需要调整一些 Phoenix的参数 ,例如线程的数量 phoenix.query.threadPoolSize ,但是按照官方文档只是说把参数加到hbase-site.xml中,但是并没有说hbase-site.xml应该放到什么位置,所以导致无法读到hbase-site.xml里面的配置。
首先说一下结论,Phoenix程序是在 user.dir 目录下去找hbase-site.xml的。所以有两种解决方案:
这样程序中就可以加载到hbase-site.xml配置的参数了。
注:本文使用的是HDP发布的phoenix-4.7.0.2.5.0.0-1245版本
大数据学习需要哪些课程?
1、Java编程技术
Java编程技术是大数据学习的基础,Java是一种强类型语言,拥有极高的跨平台能力,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等,是大数据工程师最喜欢的编程工具,因此,想学好大数据,掌握Java基础是必不可少的!
2、Linux命令
对于大数据开发通常是在Linux环境下进行的,相比Linux操作系统,Windows操作系统是封闭的操作系统,开源的大数据软件很受限制,因此,想从事大数据开发相关工作,还需掌握Linux基础操作命令。
3、Hadoop
Hadoop是大数据开发的重要框架,其核心是HDFS和MapReduce,HDFS为海量的数据提供了存储,MapReduce为海量的数据提供了计算,因此,需要重点掌握,除此之外,还需要掌握Hadoop集群、Hadoop集群管理、YARN以及Hadoop高级管理等相关技术与操作!
4、Hive
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行,十分适合数据仓库的统计分析。对于Hive需掌握其安装、应用及高级操作等。
5、Avro与Protobuf
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行,十分适合数据仓库的统计分析。对于Hive需掌握其安装、应用及高级操作等。
6、ZooKeeper
ZooKeeper是Hadoop和Hbase的重要组件,是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组件服务等,在大数据开发中要掌握ZooKeeper的常用命令及功能的实现方法。
7、HBase
HBase是一个分布式的、面向列的开源数据库,它不同于一般的关系数据库,更适合于非结构化数据存储的数据库,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,大数据开发需掌握HBase基础知识、应用、架构以及高级用法等。
8、phoenix
phoenix是用Java编写的基于JDBC API操作HBase的开源SQL引擎,其具有动态列、散列加载、查询服务器、追踪、事务、用户自定义函数、二级索引、命名空间映射、数据收集、行时间戳列、分页查询、跳跃查询、视图以及多租户的特性,大数据开发需掌握其原理和使用方法。
9、Redis
phoenix是用Java编写的基于JDBC API操作HBase的开源SQL引擎,其具有动态列、散列加载、查询服务器、追踪、事务、用户自定义函数、二级索引、命名空间映射、数据收集、行时间戳列、分页查询、跳跃查询、视图以及多租户的特性,大数据开发需掌握其原理和使用方法。
大数据平台最核心的软件是
大数据平台最核心的软件是:
一、Phoenix
这是一个Java中间层,可以让开发者在Apache HBase上执行SQL查询。Phoenix完全使用Java编写,代码位于GitHub上,并且提供了一个客户端可嵌入的JDBC驱动。
Phoenix查询引擎会将SQL查询转换为一个或多个HBase scan,并编排执行以生成标准的JDBC结果集。直接使用HBase API、协同处理器与自定义过滤器,对于简单查询来说,其性能量级是毫秒,对于百万级别的行数来说,其性能量级是秒。
二、Stinger
原叫Tez,下一代Hive,Hortonworks主导开发,运行在YARN上的DAG计算框架。某些测试下,Stinger能提升10倍左右的性能,同时会让Hive支持更多的SQL,其主要优点包括:让用户在Hadoop获得更多的查询匹配。其中包括类似OVER的字句分析功能,支持WHERE查询,让Hive的样式系统更符合SQL模型。
三、Presto
Facebook开源的数据查询引擎Presto,可对250PB以上的数据进行快速地交互式分析。该项目始于2012年秋季开始开发,目前该项目已经在超过1000名Facebook雇员中使用,运行超过30000个查询,每日数据在1PB级别。Facebook称Presto的性能比诸如Hive和Map*Reduce要好上10倍有多。
四、Shark
Shark即Hive on Spark,本质上是通过Hive的HQL解析,把HQL翻译成Spark上的RDD操作,然后通过Hive的metadata获取数据库里的表信息,实际HDFS上的数据和文件,会由Shark获取并放到Spark上运算。
五、Pig
简介:Pig是一种编程语言,它简化了Hadoop常见的工作任务。Pig可加载数据、表达转换数据以及存储最终结果。Pig内置的操作使得半结构化数据变得有意义(如日志文件)。同时Pig可扩展使用Java中添加的自定义数据类型并支持数据转换。
关于phonixjava和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-25,除非注明,否则均为
原创文章,转载请注明出处。