Amazon web services AWS红移频谱(外部表)-分配给列的Varchar数据类型无法处理同一列的数组和字符串数据

Amazon web services AWS红移频谱(外部表)-分配给列的Varchar数据类型无法处理同一列的数组和字符串数据,amazon-web-services,amazon-redshift,amazon-redshift-spectrum,Amazon Web Services,Amazon Redshift,Amazon Redshift Spectrum,任务:尝试使用红移频谱将一组JSON文件从s3存储桶加载到红移。 问题:少数文件中的JSON对象使用方括号包装数据,但其他JSON文件使用相同的对象而不使用方括号。在使用红移光谱表创建外部表时,是否有方法使用带/不带方括号“[]”的数据 要使用的JSON文件: 文件1:“x”:{“y”:{“z”:[“ABCD”]}} 文件2:“x”:{“y”:{“z”:“EFGH”}} 案例1 当z列被定义为数组时,我丢失了JSON文件中的数据,这些数据“没有方括号” 查询:从spectrum.table t中

任务:尝试使用红移频谱将一组JSON文件从s3存储桶加载到红移。 问题:少数文件中的JSON对象使用方括号包装数据,但其他JSON文件使用相同的对象而不使用方括号。在使用红移光谱表创建外部表时,是否有方法使用带/不带方括号“[]”的数据

要使用的JSON文件:

文件1:
“x”:{“y”:{“z”:[“ABCD”]}}

文件2:
“x”:{“y”:{“z”:“EFGH”}}

案例1

当z列被定义为数组时,我丢失了JSON文件中的数据,这些数据“没有方括号”

查询:
从spectrum.table t中选择regexp\u replace(t.x.y.z,“\\([\\”)”,“”);
从spectrum.table t中选择t.x.y.z

 [XX000][500310] [Amazon](500310) Invalid operation: Spectrum Scan Error
 Details:
-----------------------------------------------
 error:  Spectrum Scan Error
 code:      15001
 context:   Unsupported implicit cast: Column ('x' 'y' 'z'), From Type: LIST, To Type: VARCHAR, 

 ----------------------------------------------

你知道吗?遇到了同样的问题这是AWS支持人员所说的-。在测试了许多替代方案之后,不幸的是,它不可能以一种能够读取json数据的方式定义外部表模式,其中一列被定义为数组或字符串。因此,我将json数据从S3复制到了直接红移并在列上工作以提取所需的数据。好的,谢谢您提供的信息!
CREATE EXTERNAL TABLE spectrum.table
(x struct<y:struct<z:varchar(256)>>)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES ( 'dots.in.keys'='true') STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
location 's3://****'
 [XX000][500310] [Amazon](500310) Invalid operation: Spectrum Scan Error
 Details:
-----------------------------------------------
 error:  Spectrum Scan Error
 code:      15001
 context:   Unsupported implicit cast: Column ('x' 'y' 'z'), From Type: LIST, To Type: VARCHAR, 

 ----------------------------------------------