2019独角兽企业重金招聘Python工程师标准>>>

版本:

hbase-0.98.21-hadoop2-bin.tar.gz

phoenix-4.8.0-HBase-0.98-bin.tar.gz

apache-hive-1.2.1-bin.tar.gz

--------------------------------------------------

首先需要phoenix整合hbase

hive整合hbase,此处参照之前的笔记

将phoenix{core,queryserver,4.8.0-HBase-0.98,hive}拷贝到$hive/lib/

根据官网要求修改配置文件

> vim conf/hive-env.sh

> vim conf/hive-site.xml

启动:

> hive -hiveconf phoenix.zookeeper.quorum=hadoop01:2181

创建内部表

create table phoenix_table (

s1 string,

i1 int,

f1 float,

d1 double

)

STORED BY 'org.apache.phoenix.hive.PhoenixStorageHandler'

TBLPROPERTIES (

"phoenix.table.name" = "phoenix_table",

"phoenix.zookeeper.quorum" = "hadoop01",

"phoenix.zookeeper.znode.parent" = "/hbase",

"phoenix.zookeeper.client.port" = "2181",

"phoenix.rowkeys" = "s1, i1",

"phoenix.column.mapping" = "s1:s1, i1:i1, f1:f1, d1:d1",

"phoenix.table.options" = "SALT_BUCKETS=10, DATA_BLOCK_ENCODING='DIFF'"

);

创建成功。查询phoenix和hbase中都有相应的表生成:phoenix

hbase:

属性

  1. phoenix.table.name

    • phoenix指定表名
    • 默认值:hive一样的表
  1. phoenix.zookeeper.quorum

    • 指定ZK地址
    • 默认值:localhost
  1. phoenix.zookeeper.znode.parent
    • 指定HBase在ZK的目录
    • 默认值:/ hbase
  1. phoenix.zookeeper.client.port
    • 指定ZK端口
    • 默认值:2181
  1. phoenix.rowkeys
    • 指定phoenix的rowkey,即hbase的rowkey
    • 要求
  1. phoenix.column.mapping
    • hive与phoenix之间的列映射。

插入数据

使用hive测试表pokes导入数据

> insert into table phoenix_table select bar,foo,12.3 as fl,22.2 as dl from pokes;

成功、查询

在phoenix中查询

还可以使用phoenix导入数据,看官网的解释

注意:phoenix4.8认为加tbale关键字为语法错误,其他版本没试,不知道官网怎么没说明

创建外部表

For external tables Hive works with an existing Phoenix table and manages only Hive metadata. Deleting an external table from Hive only deletes Hive metadata and keeps Phoenix table

首先在phoenix创建表

phoenix> create table PHOENIX_TABLE_EXT(aa varchar not null primary key,bb varchar);

再在hive中创建外部表:

create external table phoenix_table_ext_1 ( aa string, bb string ) STORED BY 'org.apache.phoenix.hive.PhoenixStorageHandler' TBLPROPERTIES ( "phoenix.table.name" = "phoenix_table_ext ", "phoenix.zookeeper.quorum" = "hadoop01", "phoenix.zookeeper.znode.parent" = "/hbase", "phoenix.zookeeper.client.port" = "2181", "phoenix.rowkeys" = "aa", "phoenix.column.mapping" = "aa:aa, bb:bb" );

创建成功,插入成功

这些选项可以设置在hive CLI

性能调优

参数 默认值 描述
phoenix.upsert.batch.size 1000 批量大小插入。
[phoenix-table-name].disable.wal false 它暂时设置表属性DISABLE_WAL = true。可用于提高性能
[phoenix-table-name].auto.flush false 当WAL是disabled 的flush又为真,则按文件刷进库

查询数据

可以使用HiveQL在phoenix表查询数据。一个简单表查询当hive.fetch.task.conversion=more and hive.exec.parallel=true.就可以像在Phoenix CLI一样快。

参数 默认值 描述
hbase.scan.cache 100 为一个单位请求读取行大小。
hbase.scan.cacheblock false 是否缓存块。
split.by.stats false If true, mappers will use table statistics. One mapper per guide post.
[hive-table-name].reducer.count 1 reducer的数量. In tez mode is affected only single-table query. See Limitations
[phoenix-table-name].query.hint   Hint for phoenix query (like NO_INDEX)

遇到的问题:

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org.apache.hadoop.hbase.client.Scan.isReversed()Z

最开始我用的hbase-0.96.2-hadoop2版本,不能整合,这个是需要hbase-client-0.98.21-hadoop2.jar包,更换这个jar包就解决了,但是还是会报下面的错

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:ERROR 103 (08004): Unable to establish connection.

于是更换了hbase的版本为0.98.21的 ok了

---------

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.lang.StringIndexOutOfBoundsException: String index out of range: -1

因为字段对应不一样

create table phoenix_table_3 (a string,b int) STORED BY 'org.apache.phoenix.hive.PhoenixStorageHandler' TBLPROPERTIES ("phoenix.table.name" = "phoenix_table_3","phoenix.zookeeper.quorum" = "hadoop01","phoenix.zookeeper.znode.parent" = "/hbase","phoenix.zookeeper.client.port" = "2181","phoenix.rowkeys" = "a1","phoenix.column.mapping" = "a:a1, b:b1","phoenix.table.options" = "SALT_BUCKETS=10, DATA_BLOCK_ENCODING='DIFF'");

hive表字段与phoenix字段一样就可以了

----------

创建成功,插入也能成功,就是hive查询的时候报错找不到a1列,因为phoenix是aa列

Failed with exception java.io.IOException:java.lang.RuntimeException: org.apache.phoenix.schema.ColumnNotFoundException: ERROR 504 (42703): Undefined column. columnName=A1

create external table phoenix_table_ext (a1 string,b1 string)STORED BY 'org.apache.phoenix.hive.PhoenixStorageHandler' TBLPROPERTIES ("phoenix.table.name" = "phoenix_table_ext","phoenix.zookeeper.quorum" = "hadoop01","phoenix.zookeeper.znode.parent" = "/hbase","phoenix.zookeeper.client.port" = "2181","phoenix.rowkeys" = "aa","phoenix.column.mapping" = "a1:aa, b1:bb");

解决办法:同上hive表字段与phoenix字段一样就可以了

转载于:https://my.oschina.net/zlhblogs/blog/783894

hive整合phoenix相关推荐

  1. phoenix+hbase+Spark整合,Spark处理数据操作phoenix入hbase,Spring Cloud整合phoenix

    1 版本要求 Spark版本:spark-2.3.0-bin-hadoop2.7 Phoenix版本:apache-phoenix-4.14.1-HBase-1.4-bin HBASE版本:hbase ...

  2. Hive集成Phoenix

    Hive支持使用HDFS之外的存储系统作为底层存储系统,其中官方明确支持HBase,Kudu,Druid和JDBC(MySQL等). Hive提供了相应的接口 StorageHandlers,用以实现 ...

  3. 2.4-2.5、Hive整合(整合Spark、整合Hbase)、连接方式Cli、HiveServer和hivemetastore、Squirrel SQL Client等

    2.4其它整合 2.4.1Hive整合Spark Spark整合hive,需要将hive_home下的conf下的hive_site.xml放到spark_home下的conf目录下.(3台服务器都做 ...

  4. Hive 整合Hbase(来自学习资料--博学谷)

    1.摘要 Hive提供了与HBase的集成,使得能够在HBase表上使用HQL语句进行查询 插入操作以及进行Join和Union等复杂查询.同时也可以将hive表中的数据映射到Hbase中. 2.应用 ...

  5. hive整合HBase:HBase table xsg:test05 doesn't exist while the table is declared as an external table

    版本 虚拟机centOS7 hive 1.2.1 hbase 1.2.6 1,在hive-site.xml中添加配置 <property><name>hbase.zookeep ...

  6. 【大数据入门核心技术-Tez】(三)Tez与Hive整合

    一.准备工作 1.Hadoop和Hive安装 [大数据入门核心技术-Hadoop](五)Hadoop3.2.1非高可用集群搭建 [大数据入门核心技术-Hadoop](六)Hadoop3.2.1高可用集 ...

  7. HBase 高可用集群整合 Phoenix 配置

    HBase 高可用集群整合 Phoenix 配置 接上文:HBase 高可用集群配置 命令行参考:https://blog.csdn.net/ubuntu64fan/article/details/8 ...

  8. beeline执行sql文件_【SparkSQL】介绍、与Hive整合、Spark的th/beeline/jdbc/thriftserve2、shell方式使用SQL...

    目录 一.Spark SQL介绍 SQL on Hadoop框架: 1)Spark SQL 2)Hive 3)Impala 4)Phoenix Spark SQL是用来处理离线数据的,他的编程模型是D ...

  9. Hive 整合 HBase

    作者 | 广   责编 | 张文 头图 | CSDN 下载自视觉中国 HBase 虽然可以存储数亿或数十亿行数据,但是对于数据分析来说不太友好,它只提供了简单的基于 Key 值的快速查询能力,没法进行 ...

最新文章

  1. Fast-SCNN的解释以及使用Tensorflow 2.0的实现
  2. lucene底层数据结构——底层filter bitset原理,时间序列数据压缩将同一时间数据压缩为一行...
  3. jQuery - 获取并设置 CSS 类
  4. linux进程网络均衡,linux多CPU进程负载均衡解析
  5. iOS Hacker 使用Reveal分析App的UI界面
  6. nginx主模块指令
  7. linux内核支持utf8,Linux对非UTF-8中文编码的支持
  8. docker安装rocketmq你学会了吗
  9. web编程 端口分配_以编程方式衡量分配
  10. Map.putAll方法——追加另一个Map对象到当前Map集合
  11. shell获取命令返回结果前多少行(n行)
  12. Android系统运行库分为,Android系统架构
  13. c语言按位取反 补码,按位取反运算符,数值取反之后是反码,还是补码- -
  14. nodejs计算时间间隔_nodejs 如何定时执行一个函数
  15. 云服务器上搭建hadoop伪分布式环境
  16. paip.备份导出ANDROID安卓自带记事本内容
  17. USB接口ID卡读卡器oem软件(vb源代码)
  18. 高数_第6章无穷级数__幂级数_收敛点收敛域收敛半径
  19. Linux服务端rpm包安装Jenkins
  20. 【爬虫实战】01利用python爬虫并进行数据分析(链家 爬虫)

热门文章

  1. java投票输出票数最高前三名,给你喜欢的作品投票,票数前三名获本平台赠送书一本。|诗花朵朵...
  2. 学习笔记Kafka(一)—— Kafka简介
  3. Linux——进程系列知识详述(操作系统、PCB进程控制块、查看进程状态等)
  4. html app的登陆、注册,登陆_注册.html
  5. 安卓修改动画效果--动画差值器TimeInterpolator
  6. 五菱宏光s1图片及价格图片_全新五菱宏光S来了,还在念念不忘S1吗?国六机头还颜值在线...
  7. 父爱动画代码python_pygame用blit()实现动画效果的示例代码
  8. chrome web获取mac地址_老鬼傻瓜式讲解网络知识:网络设备如何通过IP地址获取设备MAC地址...
  9. 三星关闭shell提示_凌晨系统崩溃,低级千年虫问题,三星就是这样将中国市场拱手相让...
  10. python链表的创建_python数据结构之链表的实例讲解