Использование Redshift Spectrum для чтения данных во внешней таблице в AWS Redshift - PullRequest
0 голосов
/ 28 марта 2019

Я сделал следующее в кластере AWS Redshift, чтобы прочитать файл Parquet с S3.

create external schema s3_external_schema 
from data catalog 
database 'dev' 
iam_role 'arn:aws:iam::<MyuniqueId>:role/<MyUniqueRole>'
create external database if not exists;

тогда

CREATE external table s3_external_schema.SUPPLIER_PARQ_1 (
S_SuppKey BIGINT ,
S_Name varchar(64) ,
S_Address varchar(64) ,
S_NationKey int ,
S_Phone varchar(18) ,
S_AcctBal decimal(13, 2) ,
S_Comment varchar(105))
partitioned by (Supplier bigint, nation int)
stored as PARQUET
location 's3://<My Bucket>/<File partition>/';

Оба вышеупомянутых оператора создания были успешными. Когда выполняется запрос ниже, он возвращает 0.

select * from s3_external_schema."supplier_parq_1"
limit 10;

No rows returned.

Не хватает ли мне каких-либо разрешений или прав доступа, чтобы он возвращал вывод запроса.

1 Ответ

1 голос
/ 29 марта 2019

Действия по отладке нерабочего запроса Redshift-Spectrum

  1. попробуйте тот же запрос, используя athena: самый простой способ - запустить сканер склеивания для папки s3, он должен создать таблицу метастазов кустов, котораяВы можете сразу же запросить (используя тот же sql, что и у вас уже) в athena.
  2. используйте s3 select: с помощью консоли aws перейдите к одному из ваших файлов паркета, щелкните правой кнопкой мыши и выберите «select», затем нажмите parquet (можетуже по умолчанию) и посмотрите, что вы получите.

Если 1. или 2. работают, то, скорее всего, ваше определение не соответствует спектру.вместо этого просто используйте определение, созданное в метасольве улья, вот так.

create external schema some_schema from data catalog
database 'the_name_you_gave_the_hive_db'
iam_role 'whatever'
create external database if not exists;

Затем вы можете просто использовать вновь определенную схему спектра красного смещения без дальнейшего определения.

...