character-encoding - 在 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
我尝试过了:
- 设置
serdeproperties 'serialization.format'= '1'
或'UTF-8'
或'Latin-1'
或'ISO 8859-1'
- 设置和
row format delimited fields terminated by ';'
更改serialization.format
table properties
但以上都没有奏效。我只是在复制文件,它适合我加载它而无需提前转换它。有什么建议么?先感谢您。
解决方案
推荐阅读
- javascript - 如何在音频文件中添加文本或如何从 angularjs 中的文本制作音频文件(1.3)
- line - 更漂亮:如何在部分之间强制设置 1 条间距线?
- error-handling - 广播消息的接收者如何跟踪控制+有效负载
- python - 使用 OpenCV 测量面积的最佳方法
- python - 在执行多处理期间,函数运行次数更多
- r - 如何使用 ggplot2 删除 facet_wrap 图中的额外列?
- vulkan - 顶点位置的 Vulkan 默认坐标系统
- javascript - React Navigation 参数不会因路线而改变的原因是什么?
- c - 如何在 C 中编写代码,要求用户正确创建至少 3 个字符和一个大写字母的密码?
- mongodb - 即使集合为空,也会出现重复错误