关于Phoenix创建的表在hbase shell的显示问题及hue中不能查询的问题
建表语句
create table schema_test1
(
keys varchar not null primary key,
f.f1 varchar,
f.f2 varchar,
s.s1 varchar,
s.s2 varchar
);
upsert into schema_test1 values('key1','f1','f2','f3','f4');
create table schema_test2
(
keys varchar not null primary key,
f.f1 varchar,
f.f2 varchar,
s.s1 varchar,
s.s2 varchar
) COLUMN_ENCODED_BYTES= 0;
upsert into schema_test2 values('key1','f1','f2','f3','f4');
create table schema_test3
(
keys varchar not null primary key,
f.f1 varchar,
f.f2 varchar,
s.s1 varchar,
s.s2 varchar
) COLUMN_ENCODED_BYTES='NONE';
upsert into schema_test3 values('key1','f1','f2','f3','f4');
Phoenix中查看
0: jdbc:phoenix:node00:2181> create table schema_test1
. . . . . . . . . . . . . . . . . .> (
. . . . . . . . . . . . . . . . . .> keys varchar not null primary key,
. . . . . . . . . . . . . . . . . .> f.f1 varchar,
. . . . . . . . . . . . . . . . . .> f.f2 varchar,
. . . . . . . . . . . . . . . . . .> s.s1 varchar,
. . . . . . . . . . . . . . . . . .> s.s2 varchar
. . . . . . . . . . . . . . . . . .> );
No rows affected (1.258 seconds)
0: jdbc:phoenix:node00:2181> upsert into schema_test1 values('key1','f1','f2','f3','f4');
1 row affected (0.015 seconds)
0: jdbc:phoenix:node00:2181>
0: jdbc:phoenix:node00:2181> create table schema_test2
. . . . . . . . . . . . . . . . . .> (
. . . . . . . . . . . . . . . . . .> keys varchar not null primary key,
. . . . . . . . . . . . . . . . . .> f.f1 varchar,
. . . . . . . . . . . . . . . . . .> f.f2 varchar,
. . . . . . . . . . . . . . . . . .> s.s1 varchar,
. . . . . . . . . . . . . . . . . .> s.s2 varchar
. . . . . . . . . . . . . . . . . .> ) COLUMN_ENCODED_BYTES= 0;
No rows affected (1.258 seconds)
0: jdbc:phoenix:node00:2181> upsert into schema_test2 values('key1','f1','f2','f3','f4');
1 row affected (0.015 seconds)
0: jdbc:phoenix:node00:2181>
0: jdbc:phoenix:node00:2181> create table schema_test3
. . . . . . . . . . . . . . . . . .> (
. . . . . . . . . . . . . . . . . .> keys varchar not null primary key,
. . . . . . . . . . . . . . . . . .> f.f1 varchar,
. . . . . . . . . . . . . . . . . .> f.f2 varchar,
. . . . . . . . . . . . . . . . . .> s.s1 varchar,
. . . . . . . . . . . . . . . . . .> s.s2 varchar
. . . . . . . . . . . . . . . . . .> ) COLUMN_ENCODED_BYTES='NONE';
No rows affected (1.24 seconds)
0: jdbc:phoenix:node00:2181> upsert into schema_test3 values('key1','f1','f2','f3','f4');
1 row affected (0.007 seconds)
0: jdbc:phoenix:node00:2181> select * from schema_test1;
+-------+-----+-----+-----+-----+
| KEYS | F1 | F2 | S1 | S2 |
+-------+-----+-----+-----+-----+
| key1 | f1 | f2 | f3 | f4 |
+-------+-----+-----+-----+-----+
1 row selected (0.036 seconds)
0: jdbc:phoenix:node00:2181> select * from schema_test2;
+-------+-----+-----+-----+-----+
| KEYS | F1 | F2 | S1 | S2 |
+-------+-----+-----+-----+-----+
| key1 | f1 | f2 | f3 | f4 |
+-------+-----+-----+-----+-----+
1 row selected (0.039 seconds)
0: jdbc:phoenix:node00:2181> select * from schema_test3;
+-------+-----+-----+-----+-----+
| KEYS | F1 | F2 | S1 | S2 |
+-------+-----+-----+-----+-----+
| key1 | f1 | f2 | f3 | f4 |
+-------+-----+-----+-----+-----+
1 row selected (0.038 seconds)
0: jdbc:phoenix:node00:2181>
hbase shell中查看
hbase(main):006:0> scan 'MY_SCHEMA:SCHEMA_TEST1'
ROW COLUMN+CELL
key1 column=F:\x00\x00\x00\x00, timestamp=1555656712077, value=x
key1 column=F:\x80\x0B, timestamp=1555656712077, value=f1
key1 column=F:\x80\x0C, timestamp=1555656712077, value=f2
key1 column=S:\x80\x0D, timestamp=1555656712077, value=f3
key1 column=S:\x80\x0E, timestamp=1555656712077, value=f4
1 row(s) in 0.3350 seconds
hbase(main):007:0> scan 'MY_SCHEMA:SCHEMA_TEST2'
ROW COLUMN+CELL
key1 column=F:F1, timestamp=1555656713398, value=f1
key1 column=F:F2, timestamp=1555656713398, value=f2
key1 column=F:_0, timestamp=1555656713398, value=x
key1 column=S:S1, timestamp=1555656713398, value=f3
key1 column=S:S2, timestamp=1555656713398, value=f4
1 row(s) in 0.0120 seconds
hbase(main):008:0> scan 'MY_SCHEMA:SCHEMA_TEST3'
ROW COLUMN+CELL
key1 column=F:F1, timestamp=1555656716711, value=f1
key1 column=F:F2, timestamp=1555656716711, value=f2
key1 column=F:_0, timestamp=1555656716711, value=x
key1 column=S:S1, timestamp=1555656716711, value=f3
key1 column=S:S2, timestamp=1555656716711, value=f4
1 row(s) in 0.0120 seconds
hbase(main):009:0>
结论:
由上可见,SCHEMA_TEST1表创建时没设置COLUMN_ENCODED_BYTES
属性值,导致列名会被编码,从而导致hbase shell中列名显示乱码,hue也无法查看hbase表信息。
了解更多请参看 https://phoenix.apache.org/columnencoding.html
全局设置方法:
HBase --> 配置 --> 高级 --> 搜索 hbase-site.xml。
在客户端添加下面配置后重启服务:
<property>
<name>phoenix.default.column.encoded.bytes.attrib</name>
<value>0</value>
</property>