【问题标题】:Athena displays special characters as?Athena 将特殊字符显示为?
【发布时间】:2020-10-05 19:08:21
【问题描述】:

我有一个低于 DDL 的外部表

CREATE EXTERNAL TABLE `table_1`(
  `name` string COMMENT 'from deserializer', 
  `desc1` string COMMENT 'from deserializer', 
  `desc2` string COMMENT 'from deserializer', 
  )
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.OpenCSVSerde' 
WITH SERDEPROPERTIES ( 
  'quoteChar'='\"', 
  'separatorChar'='|', 
  'skip.header.line.count'='1') 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  's3://temp_loc/temp_csv/'
TBLPROPERTIES (
  'classification'='csv', 
  'compressionType'='none', 
  'typeOfData'='file')

当尝试使用 Athena 呈现输出时,此表读取的 csv 文件是 UTF-16 LE 编码的,特殊字符在输出中显示为问号。有没有办法在 Athena 中设置编码或解决这个问题。

【问题讨论】:

  • 你查看lazySimpleSerde了吗?它支持serialization.encoding,这可能会有所帮助,另请参阅post

标签: amazon-web-services amazon-s3 amazon-athena


【解决方案1】:

正如 Philipp Johannis 在评论中提到的那样,解决方案是将 serialization.encoding 表属性设置为“UTF-16LE”。 As far as I can see LazySimpleSerde 使用 java.nio.charset.Charset.forName,因此 Java 接受的任何编码/字符集名称都应该有效。

【讨论】:

    猜你喜欢
    • 2019-01-17
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    • 2013-11-21
    相关资源
    最近更新 更多