Спектр красного смещения показывает значения NULL для всех строк - PullRequest
0 голосов
/ 03 октября 2019

Когда я запускаю этот запрос в редакторе запросов Athena, он работает как положено.

SELECT * FROM "sampledb". "Elb_logs" limit 10;

elb_logsтаблица была сгенерирована на основе официального учебника. Когда я пытаюсь использовать спектр в красном смещении, я вижу все значения «NULL» для всех столбцов. Я создаю athena_schema, используя следующие команды:

drop schema "athena_schema";

create external schema athena_schema from data catalog 
database 'sampledb' 
iam_role 'arn:aws:iam::94331XXXXXXX:role/RedshiftCopyUnload'
region 'ap-south-1';

И вывод системной таблицы:

select * from svv_external_tables;

schemaname  tablename   location    input_format    output_format   serialization_lib   serde_parameters    compressed  parameters

athena_schema   elb_logs    s3://athena-examples-ap-south-1/elb/plaintext   org.apache.hadoop.mapred.TextInputFormat    org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat  org.apache.hadoop.hive.serde2.RegexSerDe    {"input.regex":"([^ ]*) ([^ ]*) ([^ ]*):([0-9]*) ([^ ]*):([0-9]*) ([.0-9]*) ([.0-9]*) ([.0-9]*) (-|[0-9]*) (-|[0-9]*) ([-0-9]*)     0   {"EXTERNAL":"TRUE","transient_lastDdlTime":"1480278335"}

Я не уверен, почему консоль athena показывает правильные значения для всех столбцов, в то время как красное смещение показывает все NULL?

1 Ответ

0 голосов
/ 03 октября 2019

Это произошло потому, что таблица elb_logs использовала сериализацию регулярного выражения , которую не может обработать спектр. Я преобразовал таблицу в формат файла паркета с помощью этой команды.

CREATE TABLE elb_logs3
WITH (
      format = 'PARQUET',
      parquet_compression = 'SNAPPY',
      external_location = 's3://elb163/parqfiles'
) AS SELECT * from elb_logs

Теперь у Афины будет 2 таблицы "elb_logs" и "elb_logs3". Как только я создаю внешнюю схему, используя стандартные команды, подобные этой ...

drop schema "athena_schema";

create external schema athena_schema from data catalog 
database 'sampledb' 
iam_role 'arn:aws:iam::XXX:role/RedshiftCopyUnload'
region 'us-east-1';

, теперь я могу выбирать записи из таблицы elb_logs, как эта ...

select * from athena_schema. elb_logs3 limit 10;

Обратите внимание, что при выборе из таблицы elb_logs все равно отображаются значения NULL для всех столбцов.

...