2015-04-27 3 views
0

Я запускаю сценарий hvie на EMR, который вытаскивает данные из s3 ключей. Я могу получить все данные и просто положить их в таблицу. Проблема в том, что некоторые из данных, которые мне нужны, - это имя ключа. Как получить ключевое имя от hive и поместить его в таблицу hive?Получение имени ключа s3 в пределах EMR

ответ

1

Недавно я столкнулся с аналогичной проблемой. От того, что я исследовал, это зависит. Вы можете получить данные из части «directory», но не «часть имени файла» s3-ключей.

Вы можете использовать partition, если ключи s3 отформатированы правильно. partition можно запросить так же, как и столбцы. вот ссылка с некоторыми примерами: Loading data with Hive, S3, EMR, and Recover Partitions

Вы также можете сами указать разделы, если s3-файлы уже сгруппированы правильно. Например мне нужна информация о дате, так мой сценарий выглядит следующим образом:

create external table Example(Id string, PostalCode string, State string) 
    partitioned by (year int, month int, day int) 
    row format delimited fields terminated by ',' 
    tblproperties ("skip.header.line.count"="1"); 

alter table Example add partition(year=2014,month=8,day=1) location 's3n://{BuckeyName}/myExampledata/2014/08/01/'; 

alter table Example add partition(year=2014,month=8,day=2) location 's3n://{BuckeyName}/myExampledata/2014/08/02/'; 
...keep going 

Данные partition должна быть частью «имя каталога», а не «имя файла», так как данные ульев грузов из каталога.

Если вам нужно прочитать какой-либо текст из имени файла, я думаю, вам нужно создать специальную программу для переименования объектов так, чтобы нужный текст находился в «имени каталога».

Удачи вам!

Смежные вопросы