размер столбца варчара в улье - PullRequest
0 голосов
/ 29 марта 2019

У меня проблема с форматом орков в улье. Я создаю 2 таблицы с различным форматом, текст по умолчанию и орк. следующим образом:

CREATE TABLE `test_varchar_1`(
  `name` varchar(1)
)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
;

CREATE TABLE `test_varchar_2`(
  `name` varchar(1)
)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.ql.io.orc.OrcSerde' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
;

затем вставить в таблицу:

insert into test_varchar_1
select 'hello' as name union all
select '你好' as name --two Chinese characters,means 'hello'
;

insert into test_varchar_2
select 'hello' as name union all
select '你好' as name --two Chinese characters,means 'hello'
;

затем выберите таблицы:

hive> select name from test_varchar_1;
OK
h
你

hive> select name from test_varchar_2;
OK
h
�

В test_varchar_1 результат - одна буква и один символ - выглядит правильно. но test_varchar_2 (используйте orc), не удалось получить символ. похоже на какую-то проблему с кодировкой utf8 или что-то еще?

Кстати, когда я создаю таблицу, использую varchar (3) в формате orc, я могу получить 3 буквы и 1 символ.

# test_varchar_3 use orc format and `name` is varchar(3)
hive> select name from test_varchar_3;
OK
hel
你

Я хочу изменить orc varchar, как текст по умолчанию, означает, что 1 размер varchar может принести 1 букву или 1 символ. Как я могу изменить его. спасибо!

...