配置单元orc中varchar的列大小

du7egjpx  于 2021-06-27  发布在  Hive
关注(0)|答案(0)|浏览(348)

我对Hive中的orc格式有问题。我创建了两个不同格式的表,默认文本和orc。具体如下:

  1. CREATE TABLE `test_varchar_1`(
  2. `name` varchar(1)
  3. )
  4. ROW FORMAT SERDE
  5. 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
  6. STORED AS INPUTFORMAT
  7. 'org.apache.hadoop.mapred.TextInputFormat'
  8. OUTPUTFORMAT
  9. 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
  10. ;
  11. CREATE TABLE `test_varchar_2`(
  12. `name` varchar(1)
  13. )
  14. ROW FORMAT SERDE
  15. 'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
  16. STORED AS INPUTFORMAT
  17. 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
  18. OUTPUTFORMAT
  19. 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
  20. ;

然后,插入表格:

  1. insert into test_varchar_1
  2. select 'hello' as name union all
  3. select '你好' as name --two Chinese characters,means 'hello'
  4. ;
  5. insert into test_varchar_2
  6. select 'hello' as name union all
  7. select '你好' as name --two Chinese characters,means 'hello'
  8. ;

然后,选择表:

  1. hive> select name from test_varchar_1;
  2. OK
  3. h
  4. hive> select name from test_varchar_2;
  5. OK
  6. h

在test\u varchar\u 1中,结果是一个字母和一个字符,看起来正确。但是test_varchar_2(使用orc)无法获取字符。看起来像是utf8编码问题,还是别的什么?
顺便说一句,当我用orc格式创建表use varchar(3)时,我可以获取3个字母和1个字符。

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

我想改变orc varchar像默认文本,意味着1 varchar大小可以获取1个字母或1个字符。我如何才能改变它。谢谢!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题