Apache spark 配置单元\u无法\u打开\u拆分:列<;列名称>;不支持类型null

Apache spark 配置单元\u无法\u打开\u拆分:列<;列名称>;不支持类型null,apache-spark,parquet,presto,amazon-athena,Apache Spark,Parquet,Presto,Amazon Athena,配置单元\u无法\u打开\u拆分:打开配置单元拆分s3://path/to/file/.snapy.parquet时出错:列ai.ja类型不支持null 只有在定义“JA”列时才会发生这种情况,该列是字符串的结构。如果我不使用该列,我可以无问题地进行查询。模式信息是使用ApacheSpark从我们的拼花文件中获取的 The create table statement I'm using to reproduce the error follows: CREATE EXTERNAL TAB

配置单元\u无法\u打开\u拆分:打开配置单元拆分s3://path/to/file/.snapy.parquet时出错:列ai.ja类型不支持null

只有在定义“JA”列时才会发生这种情况,该列是字符串的结构。如果我不使用该列,我可以无问题地进行查询。模式信息是使用ApacheSpark从我们的拼花文件中获取的

 The create table statement I'm using to reproduce the error follows:
  CREATE EXTERNAL TABLE <<tablename>>(`ai` struct < acs : varchar(100), ltc : varchar(100), primaryapplicant : struct < bwh : varchar(10), citizenship : varchar(20), currentaddresscity : varchar(50), currentaddressstate : varchar(50), currentaddressstreet2 : varchar(50), ss : varchar(50)>, JA : array < struct < dateofbirth : varchar(50), emailaddress : varchar(50), firstname : varchar(50), lastname : varchar(50), ss : varchar(50)>>, status : varchar(50), uri : varchar(50)>, `pr` struct < pc : struct < cn : varchar(50)>>, `product` array < struct < at : varchar(20), pi : varchar(50), pmn : varchar(256)>>, `ipt` varchar(40) ) PARTITIONED BY ( `owner` varchar(40) ) ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat' LOCATION 's3://<location>' TBLPROPERTIES ( 'compression_type' = 'snappy', 'numRows' = '2', 'transient_lastDdlTime' = <> )
在这个链接上也提出了同样的问题。 但还是没能弄明白


有人能帮忙吗?

这个问题已经解决了


为了创建Athena表,每个字段都应该精确地映射到模式,即每个字段的顺序应该与模式的顺序相同

这里没有什么明显的东西。您是否可以尝试从一个工作模式开始,然后添加一个“小”字段,直到失败?我还将尝试将字段名设置为小写,并删除
VARCHAR
类型上的数字约束(例如
VARCHAR
而不是
VARCHAR(50)
 Parquet schema : 
  root
 |-- ai: struct (nullable = true)
 |    |-- acs: string (nullable = true)
 |    |-- JA: struct (nullable = true)
 |    |    |-- DateOfBirth: string (nullable = true)
 |    |    |-- EmailAddress: string (nullable = true)
 |    |    |-- FirstName: string (nullable = true)
 |    |    |-- LastName: string (nullable = true)
 |    |    |-- ss: string (nullable = true)
 |    |-- ltc: string (nullable = true)
 |    |-- PrimaryApplicant: struct (nullable = true)
 |    |    |-- bwh: string (nullable = true)
 |    |    |-- Citizenship: string (nullable = true)
 |    |    |-- CurrentAddressCity: string (nullable = true)
 |    |    |-- CurrentAddressState: string (nullable = true)
 |    |    |-- CurrentAddressStreet2: string (nullable = true)
 |    |    |-- ss: string (nullable = true)
 |    |-- Status: string (nullable = true)
 |    |-- uri: string (nullable = true)
 |-- pr: struct (nullable = true)
 |    |-- pc: struct (nullable = true)
 |    |    |-- cn: string (nullable = true)
 |-- Product: array (nullable = true)
 |    |-- element: struct (containsNull = true)
 |    |    |-- at: string (nullable = true)
 |    |    |-- pi: string (nullable = true)
 |    |    |-- pmn: string (nullable = true)
 |-- ipt: string (nullable = true)