我在Athena上创建了一个数据库和表,指向一个S3存储桶,在那里我使用redshift数据库上的UNLOAD命令创建了日志文件。文件具有默认分隔符作为列的管道(|)。
在使用Athena接口创建表时,我使用字段终结符作为管道(|),集合和映射键终止符作为默认值。这是DDL声明。
CREATE EXTERNAL TABLE IF NOT EXISTS testdb.worktable (
field1 string,
field2 string,
field3 int,
field4 string
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES (
'serialization.format' = '|',
'field.delim' = '|',
'collection.delim' = 'undefined',
'mapkey.delim' = 'undefined',
) LOCATION 's3://bucket_location'
TBLPROPERTIES ('has_encrypted_data'='false');
问题: 大多数行都正确地与作为列提到的字段对齐(由管道|分隔)但是当特定字段中有空格时,例如说field2列下的空格,数据向右移动,意味着 field3 列数据显示在field4列
下有人可以帮我修复此错误吗?谢谢!