首页 > 解决方案 > 在 AWS Spectrum 表中加载特殊字符

问题描述

我正在尝试Spectrum在纯文本文件之上创建一个外部表,但某些值被视为 null,因为它们包含特殊字符。

创建语句:

create external table s.table_1
(
    id bigint,
    city varchar(100)
)
partitioned by (file_date varchar(25))
row format serde 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
    with serdeproperties ('quoteChar'='\"', 'separatorChar'=';', 'serialization.format'='1') stored as
    inputformat 'org.apache.hadoop.mapred.TextInputFormat'
    outputformat 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
location 's3://my_bucket/my_prefix/'
table properties ('skip.header.line.count'='1');

但是我在选择时得到的结果是:

id,city
1,<null>
2,<null>
3,Erfurt
4,Erfurt
5,Lahr

而不是预期的:

id,city
1,Mönchengladbach
2,Mönchengladbach
3,Erfurt
4,Erfurt
5,Lahr

我尝试过了:

  1. 设置serdeproperties 'serialization.format'= '1''UTF-8''Latin-1''ISO 8859-1'
  2. 设置和row format delimited fields terminated by ';'更改serialization.formattable properties

但以上都没有奏效。我只是在复制文件,它适合我加载它而无需提前转换它。有什么建议么?先感谢您。

标签: character-encodingamazon-redshiftspecial-charactersamazon-redshift-spectrum

解决方案


推荐阅读