Mysql 資料匯入 Hbase
目錄
一、前言
在大資料專案中需要做資料遷移時,我們第一時間總會想到sqoop。sqoop是apache 旗下一款“Hadoop 和關係資料庫伺服器之間傳送資料”的工具,使用才來也很方便。但因專案需求在使用sqoop是遇到了一些問題,所以決定自己開發一個一個專案解決該問題。
二、使用sqoop遇到的問題
- 想要利用hbase的特性,資料按照Row key的字典序排序儲存,但使用sqoop時無法對Row key做特殊處理;
- 使用sqoop將資料匯入hbase一些資料都預設變成字串型別。
三、專案搭建(maven專案)
依賴
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.43</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.1</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.12</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>2.6.0</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-hdfs</artifactId> <version>2.6.0</version> </dependency> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>1.2.0</version> </dependency> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-server</artifactId> <version>1.2.0</version> </dependency> |
外掛
<!-- mybatis generator 自動生成程式碼外掛 --> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile> <overwrite>true</overwrite> <verbose>true</verbose> </configuration> </plugin> |
四、專案重點
- 查詢資料庫資料
- 通過mybatis逆向工程外掛生成model 、mapper,需要編寫配置檔案generatorConfig.xml。
-
通過mybatis查詢資料,可以自己編寫查詢語句,實現靈活的資料過濾
-
將查詢到資料寫入Hbase
-
將java資料型別轉換為hbase中的二進位制資料型別,需要model類實現HbaseSerialization
或者讓model繼承HbaseSerializationReflect(建議),這個抽象類通過反射的方式實現了部分方法,已達到減少程式設計工作量和程式碼通用性
-
將資料寫入Hbase,通過工具類HbaseUtils實現靈活的資料新增、更新
- 靈活的Row Key通過實現HbaseSerialization中的getKey方法實現
-
靈活的過濾寫入hbase中的資料,model繼承HbaseSerializationReflect
-
- 專案執行