【hive-整合】hive整合phoenix及注意问题

测试环境:phoenix4.14.1 hbase1.1.1 hive2.3.3 hadoop2.7.2
(由于不是通过CDH/Ambari搭建,所以会出现组件的兼容性问题)

聊一聊

  1. 为什么要使用hive映射phoenix?
    将数据存储Phoenix,本质是HBase提供的SQL。用于前端的查询,要求RT在秒级以内。phoenix作为hbase二级索引的最佳组合,测试过上百万级别的数据构建二级索引最快的能在毫秒内返回。另外还有数据的统计分析及数据处理、机器学习建模,当然可以直接操作phoenix或spark+phoenix。对于离线的建模业务,我们希望使用hive做更复杂的处理。

如何整合phoenix

参考官网:http://phoenix.apache.org/hive_storage_handler.html
实际验证根据官网只使用phoenix-xxx-hbase-xxx-hive.jar是不足够的,下面做说明。
Step 1: 添加phoenix-xxx-hbase-xxx-hive.jar、phoenix-xxx-hbase-xxx-client.jar 、phoenix-core-xxx-HBase-xxx.jar三个jar到hive环境(此步修改需同步客户端)

方式一:直接添加改jar包到hive/lib目录下
方式二:添加jar到hive/lib-aux(没有则新建),修改hive/conf下的hive-env.sh添加如下环境变量

export HIVE_AUX_JARS_PATH=${HIVE_HOME}/lib-aux

Step 2: 在hive-site.xml添加如下属性,使得hive的MR能够使用phoenix的jar包.若不在hive-site.xml添加改属性,当hive语句执行使用mr时(如有order by的语句)依然会报Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.ipc.controller.ServerRpcControllerFactory错误。

<property>
      <name>hive.aux.jars.path</name>
      <value>${HIVE_HOME}/lib-aux</value>
</property>

注意(QUESTION):

  1. 由于phoenix jar中和hive/lib中的icu4j jar冲突,启动hive服务时会发生如下异常:
    Exception in thread "main" java.lang.NoSuchMethodError: com.ibm.icu.impl.ICUBinary.getRequiredData(Ljava/lang/String;)Ljava/nio/ByteBuffer;
    解决方案:移除hive/lib下的icu4j-4.8.1.jar
  2. 当hive语句执行使用mr时报如下错误
    FAILED: Execution Error, return code -101 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask. HADOOP_CLASSPATH
    原因:根据官网只使用phoenix-xxx-hbase-xxx-hive.jar是不足够的,还需要添加phoenix-xxx-hbase-xxx-client.jar 、phoenix-core-xxx-HBase-xxx.jar
  3. 由于hbase中通过HBase命令行单独启动异步填充索引MR(run on yarn)时报异常升级了升级disruptor-3.3.0到disruptor-3.3.11造成hive/lib中的 disruptor-3.3.0.jar本版冲突
    FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.lang.NoSuchMethodError: com.lmax.disruptor.dsl.Disruptor.<init>(Lcom/lmax/disruptor/EventFactory;ILjava/util/concurrent/ThreadFactory;Lcom/lmax/disruptor/dsl/ProducerType;Lcom/lmax/disruptor/WaitStrategy;)
    解决方案:同样升级disruptor到3.3.11,或者直接在hive/lib下移除disruptor。(经测试好像只升级或者移除客户端的disruptor也能够解决,这里为了统一把端的也一起升级了)

验证结果

  1. 创建phoenix表
create table IF NOT EXISTS TEST.TEST_PHOENIX (ID INTEGER not null primary key, name varchar,age INTEGER,score decimal, create_time timestamp,status tinyint, date_time time);

UPSERT INTO TEST.TEST_PHOENIX(id,name,age,score,create_time,status,date_time) VALUES(1,'foo',123,999.8,timestamp '2019-01-30 18:15:00',1,time '2019-01-30 18:30:00');

SELECT * FROM TEST.TEST_PHOENIX LIMIT 10;
  1. 创建hive外部表
create external table TEST_PHOENIX (
  id int,
  name string,
  age int,
  score decimal
)
STORED BY 'org.apache.phoenix.hive.PhoenixStorageHandler'
TBLPROPERTIES (
  "phoenix.table.name" = "TEST.TEST_PHOENIX",
  "phoenix.zookeeper.quorum" = "hdc-data1,hdc-data2,hdc-data3",
  "phoenix.zookeeper.znode.parent" = "/hbase",
  "phoenix.zookeeper.client.port" = "2181",
  "phoenix.rowkeys" = "id",
  "phoenix.column.mapping" = "id:ID, name:NAME, age:AGE, score:SCORE"
);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,458评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,030评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,879评论 0 358
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,278评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,296评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,019评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,633评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,541评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,068评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,181评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,318评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,991评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,670评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,183评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,302评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,655评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,327评论 2 358

推荐阅读更多精彩内容

  • 转自 沈钊伟 HBase 在大数据生态圈中的位置 提到大数据的存储,大多数人首先联想到的是 Hadoop 和 Ha...
    wangxiaoda阅读 1,247评论 0 19
  • 说明:不少读者反馈,想使用开源组件搭建Hadoop平台,然后再部署Kylin,但是遇到各种问题。这里我为读者部署一...
    大诗兄_zl阅读 2,083评论 0 2
  • 环境配置 hive-2.3.2hbase-1.4.2phoenix-4.14.0-HBase-1.4spark-2...
    soycici阅读 2,886评论 1 2
  • hive.ddl.output.format:hive的ddl语句的输出格式,默认是text,纯文本,还有json...
    博弈史密斯阅读 1,951评论 0 6
  • 简介 HBase是高可靠性,高性能,面向列,可伸缩的分布式存储系统,利用HBase技术可在廉价PC Serve...
    九世的猫阅读 2,195评论 1 6