从零开始实施推荐系统的落地部署——28.推荐系统案例(十八)openLooKeng使用hbase连接器连接hbase

举报
wuyicom 发表于 2021/02/08 16:23:34 2021/02/08
【摘要】     openLooKeng可以使用可用的连接器,用于访问不同数据源的数据。    1. 配置HBase连接器连接(1)使用openLooKeng元存储来存储HBase元数据,原本想使用HDFS作为元数据存储的实例,设置hetu.metastore.hetufilesystem.profile-name=hdfs-metastore时,运行报错如下图所示。不知道是不是版本的问题,注销掉he...

1.png

    openLooKeng可以使用可用的连接器,用于访问不同数据源的数据。

    1. 配置HBase连接器连接

1)使用openLooKeng元存储来存储HBase元数据,原本想使用HDFS作为元数据存储的实例,设置hetu.metastore.hetufilesystem.profile-name=hdfs-metastore时,运行报错如下图所示。

2.png

不知道是不是版本的问题,注销掉hetu.metastore.hetufilesystem.profile-name=hdfs-metastore,运行还是报错

3.png

2HDFS无法配置成功,创建etc/hetu-metastore.properties来连接数据库mysql,将以下属性添加到配置文件:

hetu.metastore.type=jdbc

hetu.metastore.db.url=jdbc:mysql://mas5.wuyi.com:3306

hetu.metastore.db.user=root

hetu.metastore.db.password=123456

(3)运行出现下图错误

4.png

解决办法:要在mysql里创建hetuMetastore的数据库,还有修改配置连接mysql的地方加上数据库名称,hetu.metastore.db.url=jdbc:mysql://mas5.wuyi.com:3306/hetuMetastore,再运行继续报错,如下载所示。

5.png

提示创建表时,出现The maximum column size is 767 bytes,导致无法建表。

即使在my.cnf修改配置也没有作用。

innodb_file_format = Barracuda

innodb_file_per_table = ON

innodb_large_prefix = ON

有两个办法解决。①在创建表结尾添加ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

CREATE TABLE hetuMetastore.hetu_ctlgs (

      id BIGINT NOT NULL AUTO_INCREMENT,

      catalog_name VARCHAR(256) NOT NULL,

      create_time BIGINT NOT NULL,

      owner VARCHAR(767),

      comment VARCHAR(256),

      PRIMARY KEY (id),

      UNIQUE (catalog_name)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

但是麻烦的是这个是hetu自动创建的表,只能根据报错创建相关表。

mas5mysql5.6版本,可能是版本原因,更换连接mas2mysql5.7,能成功创建表。但是在执行信息中显示:

6.png

进入hbase使用list命令查看全表,发现报错:

7.png

关闭hbase时报错:

(wuyi) [wuyi@mas1 ~]$ /opt/modules/hbase/bin/hbase-daemon.sh stop master

running master, logging to /opt/modules/hbase/logs/hbase-wuyi-master-mas1.wuyi.com.out

no master to stop because no pid file /tmp/hbase-wuyi-master.pid

默认保存在/tmp目录下的pid文件丢失。解决办法是:在hbase-env.sh中修改pid文件的存放路径。

export HBASE_PID_DIR=/opt/hadoop/pids

hbase-site.xml增加如下配置

  <property>

    <name>hbase.unsafe.stream.capability.enforce</name>

    <value>false</value>

  </property>

 说明:

hbase.unsafe.stream.capability.enforce:使用本地文件系统设置为false,使用hdfs设置为true

还要进zookeeper里删除rmr /hbase

注意必须要重启hadoop。否则无效。

4)在运行openLooKeng,出现下面错误。

8.png

解决办法:注销掉hetu.metastore.type=jdbc,重新启动openLooKeng即可。

    2. 使用hbase连接器连接hbase

1)登录http://mas1.wuyi.com:8085/ui/可以看到hbase里有defaulthbase2个数据库。也可以在hbase里创建数据库:CREATE SCHEMA wuyi; 注意要在Catalog里选择HBASE才能建数据库成功。

9.png

删除数据库wuyi的命令DROP SCHEMA wuyi;

2)查看hbase里的表数据,简单使用hbase连接器连接hbase_test这张表来测试,先查看这个表的信息

10.png

3)启动openLooKeng客户端命令/opt/modules/hetu/bin/hetu-cli

创建表:

CREATE TABLE hbase.default.hbase_test (

    rowId                VARCHAR,

    score       INTEGER

)

WITH (

    column_mapping = 'score:cf:score',

    row_id = 'rowId',

    hbase_table_name = 'default:hbase_test'

);

注意建表是要加入hbase前缀,否则会报这个错Query 20210207_152232_00082_4rjmr failed: line 1:1: Catalog must be specified when session catalog is not set

4)使用查询命令select * from hbase.default.hbase_test;获得下图结果

11.png

    说明openLooKeng使用hbase连接器成功连接hbase里面的hbase_test数据。注意hbase连接器支持两种建表形式:①创建表并直接链接到hbase数据源中已存在的表。②创建hbase数据源中不存在的新表。必须指定‘external = false’。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。