Parquet 从拼花文件创建AWS Athena表格,并将结构数组作为列

Parquet 从拼花文件创建AWS Athena表格,并将结构数组作为列,parquet,amazon-athena,Parquet,Amazon Athena,我尝试使用以下声明从存储在S3中的拼花文件创建AWS Athena表,例如: create table "db"."fufu" ( foo array< struct< bar: int, bam: int > > ) ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' WITH SERDEPROPERTIES ('s

我尝试使用以下声明从存储在S3中的拼花文件创建AWS Athena表,例如:

create table "db"."fufu" (
  foo array<
    struct<
      bar: int, 
      bam: int
    >
  >
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
WITH SERDEPROPERTIES ('serialization.format' = '1') 
LOCATION 's3://yada/yada/'
TBLPROPERTIES ('has_encrypted_data'='false');
创建表“db”。“fufu”(
foo数组<
结构<
巴:int,
bam:int
>
>
)
行格式SERDE'org.apache.hadoop.hive.ql.io.parquet.SERDE.ParquetHiveSerDe'
使用SerdeProperty('serialization.format'='1')
位置“s3://yada/yada/”
TBLProperty('has_encrypted_data'='false');
我始终得到以下错误:

line 3:11: mismatched input '<' expecting {'(', 'array', '>'} (service: amazonathena; status code: 400; error code: invalidrequestexception; request id: ...)
第3:11行:输入不匹配“”}(服务:amazonathena;状态代码:400;错误代码:invalidrequestexception;请求id:…)
语法似乎是合法的,使用spark的拼花库(带有struct类型的数组类型的struct字段)可以很好地加载文件


知道什么会导致此错误吗?

您需要从数据库名和表名中删除双引号。您还需要在
之前添加
外部

create external table db.fufu (
  foo array<
    struct<
      bar: int, 
      bam: int
    >
  >
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
WITH SERDEPROPERTIES ('serialization.format' = '1') 
LOCATION 's3://eth-test-ds/test/'
TBLPROPERTIES ('has_encrypted_data'='false');
创建外部表db.fufu(
foo数组<
结构<
巴:int,
bam:int
>
>
)
行格式SERDE'org.apache.hadoop.hive.ql.io.parquet.SERDE.ParquetHiveSerDe'
使用SerdeProperty('serialization.format'='1')
位置“s3://eth测试ds/test/”
TBLProperty('has_encrypted_data'='false');

您需要从数据库名和表名中删除双引号。您还需要在
之前添加
外部

create external table db.fufu (
  foo array<
    struct<
      bar: int, 
      bam: int
    >
  >
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
WITH SERDEPROPERTIES ('serialization.format' = '1') 
LOCATION 's3://eth-test-ds/test/'
TBLPROPERTIES ('has_encrypted_data'='false');
创建外部表db.fufu(
foo数组<
结构<
巴:int,
bam:int
>
>
)
行格式SERDE'org.apache.hadoop.hive.ql.io.parquet.SERDE.ParquetHiveSerDe'
使用SerdeProperty('serialization.format'='1')
位置“s3://eth测试ds/test/”
TBLProperty('has_encrypted_data'='false');