AWS Афина чувствительна к регистру или c .column.index.access = false? - PullRequest
2 голосов
/ 08 апреля 2020

Я создал таблицу в Афине с конфигурацией ниже

CREATE EXTERNAL TABLE `extern` (`FirstName` STRING, `LastName` STRING, `Email` STRING, `Phone` STRING, `AddressLine1` STRING, `City` STRING, `State` STRING, `PostalCode` STRING,  
`time_on_page` DECIMAL(10,3), `page` STRING, `login_time` TIMESTAMP) ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.orc.OrcSerde' 
WITH SERDEPROPERTIES ('orc.column.index.access'='false') 
STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat' 
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
LOCATION 's3://location/' tblproperties ("orc.compress"="ZLIB")

, и когда я запрашиваю ее с помощью select * from extern, я получаю пустые значения для всех столбцов, кроме time_on_page, page и login_time. Однако это возвращает данные во всех столбцах, если я использую ('orc.column.index.access'='true'). Схема имен столбцов в файле OR C точна в соответствии с тем, что определено в операторе создания.

File Version: 0.12 with ORC_135
Rows: 13559
Compression: ZLIB
Compression size: 131072
Type: struct<FirstName:string,LastName:string,Email:string,Phone:string,AddressLine1:string,City:string,State:string,PostalCode:string,time_on_page:decimal(10,3),page:string,login_time:timestamp>

Вопрос в том, возможно ли, что когда orc.column.index.access=false движок пытается прочитать имена столбцов с учетом ограничений регистра?

1 Ответ

0 голосов
/ 10 апреля 2020

Очевидно, что версия Amazon Presto основана на PrestoDB, и эта функция, по-видимому, недоступна в Prestodb на момент написания этой статьи; Однако Presto sql, похоже, пользовался этой поддержкой начиная с версии 312 и далее (ref: https://github.com/prestosql/presto/issues/802). Решение состоит в том, чтобы убедиться, что схема в файле OR C использует имя столбца в нижнем регистре для сопоставления его с именами из метасчета куста (которые всегда в нижнем регистре).

Код отладки для presto db: https://github.com/prestodb/presto/blob/6647e13f64883f7cfa89221d91b981bcc3a57618/presto-hive/src/main/java/com/facebook/presto/hive/HiveUtil.java#L984 https://github.com/prestodb/presto/blob/95bcb3947cad1570e19a0adaebc58009aa362ada/presto-orc/src/main/java/com/facebook/presto/orc/OrcReader.java#L130

...