ApacheDoris通过外部表同步数据
Apache Doris通过外部表同步数据
Doris 可以创建通过 ODBC 协议访问的外部表。创建完成后,可以通过 SELECT 语句直接查询外部表的数据,也可以通过 INSERT INTO SELECT 的⽅式导⼊外部表的数据。
本⽂档主要介绍如何创建通过 ODBC 协议访问的外部表,以及如何导⼊这些外部表的数据。⽬前⽀持的数据源包括:MySQL
Oracle
PostgreSQL
ODBC驱动安装
5.3 驱动
mysql下载出现installer1.下载5.3版本的MySQL的odbc驱动
所以准备了⼀个5.3版本的驱动
2. Doirs所在的Docker安装unixODBC
因为mysql-odbc依赖unixodbc
yum install unixODBC.x86_64 -y yum install unixODBC-devel.x86_64 -y
3. 安装MySQL的odbc驱动
先将安装包从宿主机拷贝到docker节点上
hejiahao@mounthua:~/package$ docker cp mysql-connector-odbc-5.3.14-linux-glibc2.12-x86-64bit.tar 757c1cfcaa55:/opt
hejiahao@mounthua:~/package$
解压
tar -xvf mysql-connector-odbc-5.3.14-linux-glibc2.12-x86-64bit.tar
拷贝
cd mysql-connector-odbc-5.3.14-linux-glibc2.12-x86-64bit cp lib/* /usr/lib64
lib下⾯有两个⽂件
5a是ansi编码
5w是Unicode编码
由此可见,Doris需要的是Unicode编码的⽂件,也就是5w那个⽂件
[root@757c1cfcaa55 mysql-connector-odbc-5.3.14-linux-glibc2.12-x86-64bit]# cd bin ./myodbc-installer -d -a -n "MySQL ODBC 5.3 Driver" -t "DRIVER=/usr /lib64/libmyodbc5w.so;SETUP=/usr/lib64/libmyodbc5w.so"
[root@757c1cfcaa55 bin]#
4.为每⼀台Doris的BE节点配置MySQL的ODBC
进⼊be的conf⽬录,有个odbcinst.ini⽂件
cd output/be/conf/
vim odbcinst.ini
修改MySQL的相关配置
# Setup from the unixODBC package
[MySQL ODBC 5.3 Unicode Driver]
Description    = ODBC for MySQL
Driver          = /usr/lib64/libmyodbc5w.so
FileUsage      =1
配置完以后重启BE即可,所有BE节点操作⼀样
8.0 驱动
下载地址
sql/archives/get/p/10/file/mysql-connector-odbc-8.0.11-1.el7.x86_64.rpm 然后执⾏
yum localinstall -y mysql-connector-odbc-8.0.11-1.el7.x86_64.rpm
配置驱动
vim /etc/odbcinst.ini
[MySQL]
Description=ODBC for MySQL
Driver=/usr/lib/libmyodbc5.so
Setup=/usr/lib/libodbcmyS.so
Driver64=/usr/lib64/libmyodbc5.so
Setup64=/usr/lib64/libodbcmyS.so
FileUsage=1
[MySQL ODBC 8.0 Unicode Driver]
Driver=/usr/lib64/libmyodbc8w.so
UsageCount=1
[MySQL ODBC 8.0 ANSI Driver]
Driver=/usr/lib64/libmyodbc8a.so
UsageCount=1
测试驱动
vim  /etc/odbc.ini
[mysql]
Description    = Data source MySQL
Driver          = MySQL ODBC 8.0 Driver
Server          =192.168.1.120
Host            =192.168.1.120
Database        = dbname
Port            =3306
User            = root
Password        =123456
⼀般是通过uncode ⽅式连接,Driver 必须是MySQL ODBC 8.0 Driver ,
其他参数按mysql server 的设置。Database 选择已经建⽴好的数据库。
测试ODBC连接
[root@757c1cfcaa55 be]# isql -v mysql
+---------------------------------------+
| Connected!|
||
| sql-statement                        |
|help[tablename]|
| quit                                  |
||
+---------------------------------------+
SQL>
⼀切正常
配置Doris be ODBC
Doris 使⽤ODBC连接mysql或者其他数据库,只需要在BE节点安装和配置ODBC即可修改BE节点odbc配置信息
├── bin
│├── be.pid
│├── start_be.sh
│└── stop_be.sh
├── conf
│├── be.conf
│└── odbcinst.ini  //修改这个⽂件的配置信息
├── lib
│├── meta_tool
│├── palo_be
│├── small_file
│├── udf
│└── udf-runtime
⽰例:
我这⾥只使⽤了Mysql
# Driver from the postgresql-odbc package
# Setup from the unixODBC package
[PostgreSQL]
Description    = ODBC for PostgreSQL
Driver          = /usr/lib/psqlodbc.so
Setup          = /usr/lib/libodbcpsqlS.so
FileUsage      =1
# Driver from the mysql-connector-odbc package
# Setup from the unixODBC package
#[MySQL ODBC 8.0 Unicode Driver]
#Description    = ODBC for MySQL
#Driver          = /usr/lib64/libmyodbc8w.so
#FileUsage      = 1
[MySQL Driver]
Description    = ODBC for MySQL
Driver          = /usr/lib/libmyodbc8a.so
FileUsage      =1
# Driver from the oracle-connector-odbc package
# Setup from the unixODBC package
[Oracle 19 ODBC driver]
Description=Oracle ODBC driver for Oracle 19
Driver=/usr/lib/libsqora.so.19.1
配置完以后重启BE即可,所有BE节点操作⼀样
创建外部表
创建 MySQL外部表的详细介绍请参阅 语法帮助⼿册。
这⾥仅通过⽰例说明使⽤⽅式。
1. 创建 MySQLResource
MySQLResource 的⽬的是⽤于统⼀管理外部表的连接信息。
CREATE EXTERNAL RESOURCE `mysql_odbc`
PROPERTIES (
"type"="odbc_catalog",
"host"="192.168.50.173",
"port"="3306",
"user"="root",
"password"="root",
"driver"="MySQL Driver",
"odbc_type"="mysql"
);
这⾥我们创建了⼀个名为 mysql_odbc 的 Resource,其类型为 odbc_catalog,表⽰这是⼀个⽤于存储 ODBC 信息的
Resource。odbc_type 为 mysql,表⽰这个 OBDC Resource 是⽤于连接 mysql 数据库的。关于其他类型的资源,具体可参阅 ⽂档。
2. 创建外部表
CREATE EXTERNAL TABLE`external_rds_test`(
id BIGINT,
user_id INT,
name VARCHAR(20),
age INT,
password VARCHAR(20)
)ENGINE=ODBC
COMMENT"ODBC"
PROPERTIES (
"odbc_catalog_resource"="mysql_odbc",
"database"="lining_olap",
"table"="test"
);
这⾥我们创建⼀个 external_rds_test 外部表,并引⽤了之前创建的 mysql_odbc Resource
查询数据
mysql>select * from external_rds_test;
+------+---------+---------+------+----------+
|id| user_id | name    | age  | password |
+------+---------+---------+------+----------+
|1|1111| 3dasasd |123|3123213|
+------+---------+---------+------+----------+
1 row in set(0.06 sec)
mysql>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。