Parquet二进制utf8作为配置单元上的字符串

x6yk4ghg  于 2021-06-27  发布在  Hive
关注(0)|答案(2)|浏览(438)

有一个 parquet 锉刀 binary (UTF8) 列名为 在里面。 是否可以创建一个 `external` 将包含相同列的配置单元上的表 ,但铸造成 string ?
Parquet文件的结构:

$ parquet-tools schema ~/Downloads/dataset.gz.parquet
message spark_schema {
  optional binary abc (UTF8);
}
hmae6n7t

hmae6n7t1#

显然,你可以简单地指定 string 作为柱的类型,它将得到照顾。

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

yruzcnhs2#

涉及三种不同类型:
配置单元中的表有一个sql架构。每一列都有一个类型,如string或decimal。每个表(或分区,如果它是分区表)由多个文件组成,这些文件必须是相同的文件格式,例如纯文本、avro或parquet。
每个单独的文件都有类型信息(纯文本除外)。对于Parquet地板,这意味着还有两层:
物理类型描述存储大小,例如int32、byte\ u array或fixed\ len\ byte\ u array。
逻辑类型告诉应用程序如何解释数据,例如utf8或decimal。
配置单元的字符串列类型存储为字节数组物理类型(在Parquet模式定义中称为binary),并带有utf8逻辑类型注解。

相关问题