Kylin接入外部Jdbc Mysql数据源

2023-05-16

前言

Kylin目前不仅仅支持Hive作为数据源构建cube,也可以支持使用外部jdbc作为数据源进行构建,比如使用MySQL数据源的时候会让我们下载sqoop安装包,本质上是使用sqoop全量同步我们要构建的MySQL数据,先加载到hive的临时表中,构建完成之后然后再清理。对于需要增量数据同步并进行构建的情况不太友好


提示:以下是本篇文章正文内容,下面案例可供参考

一、环境安装部署

为了简化安装的环节,可以直接借用官方提供的docker化部署方案进行验证即可。

# 拉取镜像
docker pull apachekylin/apache-kylin-standalone:3.1.0

#启动容器 运行镜像(暴露的端口仅仅限于测试)
docker run -d --log-opt max-size=10m --log-opt max-file=1 \
-m 8G \
-p 7070:7070 \
-p 8088:8088 \
-p 16010:16010 \
-p 50070:50070 \
-p 8032:8032 \
-p 8042:8042 \
-p 3306:3306 \
-p 8998:8998 \
-p 19888:19888 \
apachekylin/apache-kylin-standalone:3.1.0

# 查看容器
[root@node01 ~]# docker ps
CONTAINER ID   IMAGE                                       COMMAND                  CREATED        STATUS        PORTS                                                                                                                                                                                                                                                                                                                                                                                                                                                      NAMES
2e0dba21780a   apachekylin/apache-kylin-standalone:3.1.0   "/home/admin/entrypo…"   17 hours ago   Up 17 hours   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 0.0.0.0:7070->7070/tcp, :::7070->7070/tcp, 0.0.0.0:8032->8032/tcp, :::8032->8032/tcp, 0.0.0.0:8042->8042/tcp, :::8042->8042/tcp, 0.0.0.0:8088->8088/tcp, :::8088->8088/tcp, 0.0.0.0:8998->8998/tcp, :::8998->8998/tcp, 0.0.0.0:9999->9999/tcp, :::9999->9999/tcp, 0.0.0.0:16010->16010/tcp, :::16010->16010/tcp, 0.0.0.0:19888->19888/tcp, :::19888->19888/tcp, 0.0.0.0:50070->50070/tcp, :::50070->50070/tcp   distracted_bartik


#进入容器
docker exec -it 2e0dba21780a bash

访问kylin web页面:http://node01:7070/kylin/models (注意配置hosts映射)
在这里插入图片描述

二、MySQL JDBC数据源测试

1. 环境配置

1、配置MySQL数据源

# Mysql DataSource
kylin.source.default=8
kylin.source.jdbc.connection-url=jdbc:mysql://localhost:3306/ods
kylin.source.jdbc.driver=com.mysql.jdbc.Driver
kylin.source.jdbc.dialect=mysql
kylin.source.jdbc.user=root
kylin.source.jdbc.pass=123456
kylin.source.jdbc.sqoop-home=/home/admin/sqoop
kylin.source.jdbc.filed-delimiter=|
kylin.source.jdbc.sqoop-mapper-num=1

2、部署安装sqoop

cd /home/admin
wget http://archive.apache.org/dist/sqoop/1.4.7/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz .
wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.49/mysql-connector-java-5.1.49.jar .
设置软连接 ln -s sqoop-xxx-xx  sqoop

分别将MySQL包放在kylin/ext目录下,sqoop/lib目录下即可。

3、MySQL新建库表

# 无效(后面会说)
CREATE TABLE sc(  
   `ID` bigint(20) NOT NULL AUTO_INCREMENT,
   `SNO` varchar(10)  NOT NULL,  
   `CNO` varchar(10)  NOT NULL,  
   `SCORE` float(4,2)  NOT NULL,  
    PRIMARY KEY (`ID`)
)ENGINE=InnoDB DEFAULT CHARSET=latin1;
# 有效
CREATE TABLE sc_1(  
   ID bigint(20) NOT NULL AUTO_INCREMENT,
   SNO varchar(10)  NOT NULL,  
   CNO  varchar(10)  NOT NULL,  
   SCORE  float(4,2)  NOT NULL,  
   PRIMARY KEY (ID)
)ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- 构造数据:
insert into sc_1 (SNO,CNO,SCORE) values ('s001','c001',78.9);  
insert into sc_1 (SNO,CNO,SCORE) values ('s002','c001',80.9);  
insert into sc_1 (SNO,CNO,SCORE) values ('s003','c001',81.9);  
insert into sc_1 (SNO,CNO,SCORE) values ('s004','c001',60.9);  
insert into sc_1 (SNO,CNO,SCORE) values ('s001','c002',82.9);  
insert into sc_1 (SNO,CNO,SCORE) values ('s002','c002',72.9);  
insert into sc_1 (SNO,CNO,SCORE) values ('s003','c002',81.9);  
insert into sc_1 (SNO,CNO,SCORE) values ('s001','c003','59');

2. 测试

1、重新加载配置,可以不用重启服务
vi conf/kylin.properties

# Mysql DataSource
kylin.source.default=8
kylin.source.jdbc.connection-url=jdbc:mysql://localhost:3306/ods
kylin.source.jdbc.driver=com.mysql.jdbc.Driver
kylin.source.jdbc.dialect=mysql
kylin.source.jdbc.user=root
kylin.source.jdbc.pass=123456
kylin.source.jdbc.sqoop-home=/home/admin/sqoop
kylin.source.jdbc.filed-delimiter=|
kylin.source.jdbc.sqoop-mapper-num=1

在这里插入图片描述

2、测试构建以sc_1表为原表的cube 是ok的
在这里插入图片描述
Sqoop数据同步命令如下:

exe cmd:/home/admin/sqoop/bin/sqoop import \
-Dorg.apache.sqoop.splitter.allow_text_splitter=true  \
-Dmapreduce.job.queuename=default \
--connect "jdbc:mysql://localhost:3306/ods" \
--driver com.mysql.jdbc.Driver --username root --password "123456" \
--query "SELECT sc_1.ID as SC_1_ID ,sc_1.SNO as SC_1_SNO  FROM ods.sc_1 sc_1 WHERE 1=1 AND \$CONDITIONS" \
 --target-dir hdfs://localhost:9000/kylin/kylin_metadata/kylin-54398b6b-de6b-dfa5-0649-ff7a758548c6/kylin_intermediate_sc_1_cube_8a15d8b2_3c43_e74b_3f47_20996214d9d2 \
--split-by ID --boundary-query "SELECT min(ID), max(ID) FROM ods.sc_1 " \
--null-string '\\N' --null-non-string '\\N' --fields-terminated-by '|' \
--num-mappers 1

结果:
在这里插入图片描述

但是对应sc表,却在页面端无法点击报406的错误,如下:
HTTP Status 406 – 不可接收
Type Status Report
描述 根据请求中接收到的主动协商头字段,目标资源没有用户代理可以接受的当前表示,而且服务器不愿意提供缺省表示。
在这里插入图片描述
我这里提了一个issue,详情参见 https://issues.apache.org/jira/browse/KYLIN-5039


总结

ods.sc表无法进行构建,页面端的Action按钮也无法点击弹出对话框,我甚至基于此进行debug但是很遗憾它根本没有进入断点,有知道的小伙伴还请不吝赐教。这个问题我会持续关注,后面探索下使用sqoop做增量更新添加where条件过滤的问题。

注意
1、sqoop抽取到hive表是临时的,每次构建都要去抽取全量的数据,这增大了数据库的压力,网络开销,甚至拖慢了cube整体构建速度。
除非通过定制其源码改成可支持的增量更新方式才会更好用,如不然只能自己定义定时同步任务到hive表进行构建了,使用sqoop的话多少还是有些不太方便的地方。

Tips:
新建模型之前一定要去数据源处加载自己想要的表,然后Sync一下即可,对于JDBC的可以不勾选Calculate column cardinality选项。

参考

http://kylin.apache.org/cn/docs/install/kylin_docker.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kylin接入外部Jdbc Mysql数据源 的相关文章

随机推荐

  • linux & windows C++开发差异

    新手注意事项 1 文件与目录的大小写以及路径分隔符的差别 windows下不区分大小写 xff0c 路径分隔符一般使用 xff1b linux下区分大小写 xff0c 路径分隔符使用 2 itoa 函数在linux下并不存在 所以使用类似s
  • 深度学习结合SLAM的研究思路/成果整理之(一)使用深度学习方法替换SLAM中的模块

    整理了部分近两年深度学习结合SLAM的一些研究成果 xff08 参考知乎帖子https www zhihu com question 66006923 和泡泡机器人公众号 xff0c 附上论文链接和已找到的源代码 数据集链接 xff0c 大
  • 深度学习与自动驾驶领域的数据集(KITTI,Oxford,Cityscape,Comma.ai,BDDV,TORCS,Udacity,GTA,CARLA,Carcraft)

    http blog csdn net solomon1558 article details 70173223 Torontocity HCI middlebury caltech 行人检测数据集 ISPRS航拍数据集 mot challe
  • 又一遍……ORB_SLAM2+ZED相机(SDK2.2.1)+CUDA9.0+ROS Kinetic 安装测试 some tips

    很久没碰过ORB SLAM2了 xff0c 今天有需要 xff0c 再来试一遍 xff5e ORB SLAM2的github链接 1 安装ORB SLAM2的依赖库 按照链接一步一步来就可以 eigen直接用命令安装就可以 sudo apt
  • MacOS设置终端代理

    前言 国内的开发者或多或少都会因为网络而烦恼 xff0c 因为一些特殊原因有时候网络不好的时候需要使用代理才能完成对应的操作 原来我一直都是使用斐讯路由器然后刷了梅林的固件 xff0c 直接在路由器层面设置转发代理 xff0c 把一些国内网
  • Linux SIGPIPE信号产生原因与解决方法

    TCP 四次握手 产生SIGPIPE的原因 SIGPIPE信号产生的原因 xff1a 简单来说 xff0c 就是客户端程序向服务器端程序发送了消息 xff0c 然后关闭客户端 xff0c 服务器端返回消息的时候就会收到内核给的SIGPIPE
  • Homebrew最新安装--解决安装超时的问题

    更新 2021 1 20 可以直接用下边的脚本进行安装 bin zsh c span class token string 34 span class token variable span class token variable spa
  • TIDB使用时的注意点笔记

    场景 xff1a 虽然TiDB号称完全兼容MySQL 5 7 协议 MySQL 5 7 常用的功能及语法 xff0c 但是其与MySQL数据库仍然存在一些差异 xff0c 可能会导致下游TiDB环境故障 以下是我们使用TiDB时需要重点关注
  • SpringBoot结合MyBatis-Plus快速CRUD笔记

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言一 DTO amp DO二 示例1 定义Controller2 定义Service和实现3 定义Mapper4 前端访问测试
  • Java最佳实践笔记

    一 常量定义最佳实践 span class token keyword public span span class token keyword final span span class token keyword class span
  • 聊聊JavaSPI

    文章目录 前言一 SPI 示例二 SPI原理与双亲委派机制1 MySQL Driver2 DataX 插件的热插拔也是破坏双亲委派的一种3 Tomcat类加载同样是破坏了双亲委托 总结参考文章 前言 SPI 全称为 Service Prov
  • 实时平台开发笔记

    文章目录 一 背景二 功能模块划分1 作业台主要功能任务生命周期 2 任务列表主要功能 3 项目管理4 模板管理5 UDF管理 三 问题解决1 kerberos认证问题2 分布式锁解决Job名称冲突问题3 自定义线程池用以监控线程运行情况4
  • 二叉树快速拾遗笔记

    文章目录 前言二叉树前中后序遍历反转二叉树二叉树最大最小深度对称二叉树判断是否是平衡二叉树构造最大二叉树前序遍历打印二叉树二叉树层次遍历二叉树中和为某一值的路径总结 前言 二叉树基础内容拾遗 xff0c 使用递归解题三部曲 xff1a 找整
  • 链表拾遗笔记

    文章目录 1 反转单链表2 打印单链表3 O 1 删除指定节点4 双指针法求求链表倒数第k个节点5 判断链表是不是有环6 合并两个单链表7 删除链表中的重复节点7 实现一个单链表总结 提示 xff1a 以下是本篇文章正文内容 xff0c 下
  • 经典的排序算法拾遗笔记

    文章目录 选择排序插入排序冒泡排序快速排序二分查找交换两个位置的元素 总结 各种排序算法复杂度总结如下 xff1a 选择排序 分析 xff1a span class token comment 选择排序 4 3 5 1 4 3 5 1 le
  • BGP基本配置与总结

    使用BGP路由协议的意义是将自治系统中的路由通告到外部 xff0c 而自治系统内使用的是IGP路由 xff0c 这就是为什么内部BGP管理距离这么高 xff0c 而外部BGP管理距离这么低的原因了 1 建立BGP邻居的前提 xff1a 在B
  • Flink常见报错持续更新

    Flink 1 10 1 Job因为没有可用的任务slot而失败 2021 06 24 12 50 36 433 INFO org apache flink runtime executiongraph ExecutionGraph Job
  • IDEA一劳永逸设置默认maven

    前言 每次发现新建项目的时候maven设置便自动重置是不是很恼火 xff0c 别急这里记录下一劳永逸的办法 提示 xff1a 以下是本篇文章正文内容 xff0c 下面案例可供参考 一 设置 示例 xff1a IntelliJ IDEA 20
  • 远程debug docker中应用

    前言 最近在研究kylin相关的内容 xff0c 采用官方提供的docker化一键部署的方式来进行 xff0c 作为远程服务本地debug的原理是相通的 xff0c 这里记录下来以便参考 提示 xff1a 以下是本篇文章正文内容 xff0c
  • Kylin接入外部Jdbc Mysql数据源

    前言 Kylin目前不仅仅支持Hive作为数据源构建cube xff0c 也可以支持使用外部jdbc作为数据源进行构建 xff0c 比如使用MySQL数据源的时候会让我们下载sqoop安装包 xff0c 本质上是使用sqoop全量同步我们要