最近在做大數據相關功能,有個需求,使用datax同步hbase到hbase中,其中還是有很多細節值得記錄:
首先來看一下datax的源碼中,如果你使用phoenix創建的表,那么
你就需要使用對應的hbase帶有sql字樣的,reader和writer.
然后如果你使用datax-web來進行測試的,那么,他默認使用的是hbase11xreader和對應的writer.
這個時候,是可以讀出,使用hbase shell去創建的表的,同時也可以讀出phoneix創建的表.
關于適用phoenix去操作hbase常用sql:
1.創建表:
CREATE TABLE IF NOT EXISTS "qqqq_tables" ("id" varchar primary key, "source_id" varchar, "table_name" varchar, "table_desc" varchar, "remark" varchar, "create_time" varchar) COLUMN_ENCODED_BYTES=0;CREATE TABLE IF NOT EXISTS "qqqq_tables" ("id" varchar primary key, "source_id" varchar, "table_name" varchar, "table_desc" varchar, "remark" varchar, "create_time" varchar) COLUMN_ENCODED_BYTES=0;2.顯示所有表:
show tables3.查詢表:
select * from "qdbd_table_meta"4.命令行連接
./sqlline.py 172.19.126.120,172.19.126.121,172.19.126.122:21815.刪除表:
drop table "userinfo";6.插入數據:
0: jdbc:phoenix:172.19.126.120,172.19.126.121> upsert into "userinfo" values('4','xiaohuang','xiaohuang@126.com','13256716111','{name:xiaohuang}');
1 row affected (0.14 seconds)7.查詢數據添加條件:對應字段要添加雙引號
0: jdbc:phoenix:172.19.126.120,172.19.126.121> select * from "userinfo" where "id" = '3';
+----+--------------+---------------------+-------------+-----------------+
| id | name | email | mobile | son_json |
+----+--------------+---------------------+-------------+-----------------+
| 3 | xiaoxingxing | xxingxingou@126.com | 13256716188 | {name:xingxing} |
+----+--------------+---------------------+-------------+-----------------+8.使用upsert更新表的某個字段
0: jdbc:phoenix:172.19.126.120,172.19.126.121> upsert into "userinfo" ("id","name") values ('4','xiaohuangzine');
1 row affected (0.017 seconds)
0: jdbc:phoenix:172.19.126.120,172.19.126.121> select * from "userinfo";
+----+---------------+---------------------+-------------+------------------+
| id | name | email | mobile | son_json |
+----+---------------+---------------------+-------------+------------------+
| 3 | xiaoxingxing | xxingxingou@126.com | 13256716188 | {name:xingxing} |
| 4 | xiaohuangzine | xiaohuang@126.com | 13256716111 | {name:xiaohuang} |
+----+---------------+---------------------+-------------+------------------+
2 rows selected (0.035 seconds)9.update更新某個字段無法使用:0: jdbc:phoenix:172.19.126.120,172.19.126.121> update "userinfo" set "name" = 'xiaohuangzi