思考:之前做过Hive和Hbase之间的映射,那必然HIve和Mysql也可以映射,如果能实现映射,那就不需要canal实时同步增量数据了??那如果实现了映射联查的效果咋样?
实现:
1、利用三方开源项目实现映射
项目地址:https://github.com/stagraqubole/Hive-JDBC-Storage-Handler或https://github.com/KironJ/hive-jdbc-storage-handler
2、打包之后上传到对应目录
2.1 打包:
例如:
2.1.1:git clone https://github.com/qubole/Hive-JDBC-storage-Handler.git
2.1.2:cd Hive-JDBC-storage-Handler
2.1.3: mvn clean install -Phadoop-1
2.1.4: 在target/下找到jar包
2.1.5:把jar包放在hive中的auxlib文件夹中(这样就不用主动添加jar包,在HUE中也能用),如果你就是一次性的那就:ADD JAR <path-to-jar>
3、根据项目介绍我们只需要在hive中建立映射表即可
use ajmall_warehouse;
create external table if not exists uc_user_info(
id bigint,
update_date bigint,
user_unique_id string,
sex int,
birthday string,
preferences string
)
stored by 'org.apache.hadoop.hive.jdbc.storagehandler.JdbcStorageHandler'
tblproperties (
'mapred.jdbc.driver.class'='com.mysql.jdbc.Driver',
'mapred.jdbc.url'='jdbc:mysql://ip:port/your_database?characterEncoding=utf8',
'mapred.jdbc.username'='your_user',
'mapred.jdbc.input.table.name'='your_table_name',
'mapred.jdbc.password'='your_password',
'mapred.jdbc.hive.lazy.split'= 'false'
);
4.联查
你想怎么查就怎么查
5、结论
这种方式把我的mysql跑崩了,所以我果断使用canal同步数据哈哈哈哈哈哈,希望你们看到最后mysql没跑崩。RIP