从零开始实施推荐系统的落地部署——28.推荐系统案例(十八)openLooKeng使用hbase连接器连接hbase
openLooKeng可以使用可用的连接器,用于访问不同数据源的数据。
1. 配置HBase连接器连接
(1)使用openLooKeng元存储来存储HBase元数据,原本想使用HDFS作为元数据存储的实例,设置hetu.metastore.hetufilesystem.profile-name=hdfs-metastore时,运行报错如下图所示。
不知道是不是版本的问题,注销掉hetu.metastore.hetufilesystem.profile-name=hdfs-metastore,运行还是报错
(2)HDFS无法配置成功,创建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)运行出现下图错误
解决办法:要在mysql里创建hetuMetastore的数据库,还有修改配置连接mysql的地方加上数据库名称,hetu.metastore.db.url=jdbc:mysql://mas5.wuyi.com:3306/hetuMetastore,再运行继续报错,如下载所示。
提示创建表时,出现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自动创建的表,只能根据报错创建相关表。
②mas5的mysql是5.6版本,可能是版本原因,更换连接mas2的mysql5.7,能成功创建表。但是在执行信息中显示:
进入hbase使用list命令查看全表,发现报错:
关闭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,出现下面错误。
解决办法:注销掉hetu.metastore.type=jdbc,重新启动openLooKeng即可。
2. 使用hbase连接器连接hbase
(1)登录http://mas1.wuyi.com:8085/ui/可以看到hbase里有default和hbase这2个数据库。也可以在hbase里创建数据库:CREATE SCHEMA wuyi; 注意要在Catalog里选择HBASE才能建数据库成功。
删除数据库wuyi的命令DROP SCHEMA wuyi;
(2)查看hbase里的表数据,简单使用hbase连接器连接hbase_test这张表来测试,先查看这个表的信息
(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;获得下图结果
说明openLooKeng使用hbase连接器成功连接hbase里面的hbase_test数据。注意hbase连接器支持两种建表形式:①创建表并直接链接到hbase数据源中已存在的表。②创建hbase数据源中不存在的新表。必须指定‘external = false’。
- 点赞
- 收藏
- 关注作者
评论(0)