拼写二进制UTF8作为蜂巢上的字符串

时间:2018-11-12 18:06:04

标签: hive parquet sqldatatypes

其中有一个镶木地板文件,其中包含名为binary (UTF8)的{​​{1}}列。
是否可以在配置单元上创建一个abc表,该表包含相同的列external,但强制转换为abc

镶木地板文件的结构:

string

2 个答案:

答案 0 :(得分:1)

涉及三种不同的类型:

  • Hive中的表有一个SQL模式。每个列都有一个类型,例如STRING或DECIMAL。每个表(如果是分区表,则为分区)由多个文件组成,这些文件必须具有相同的文件格式,例如PLAINTEXT,AVRO或PARQUET。
  • 每个单独的文件也将具有类型信息(PLAINTEXT除外)。对于实木复合地板,这意味着另外两个级别:
    • physical type描述了存储大小,例如INT32,BYTE_ARRAY或FIXED_LEN_BYTE_ARRAY。
    • logical type告诉应用程序如何解释数据,例如UTF8或DECIMAL。

Hive的STRING列类型存储为带有UTF8逻辑类型注释的BYTE_ARRAY物理类型(在Parquet模式定义中称为二进制)。

答案 1 :(得分:0)

显然,您可以简单地指定string作为列的类型,它将得到处理。

CREATE EXTERNAL TABLE `dataset`(  
    `abc` string)                                
  STORED AS parquet
  LOCATION                                            
    '...';