Невозможно создать таблицу Hive из файла avro

Я могу создать таблицу поверх файла avro, используя следующий синтаксис без каких-либо ошибок. У елей пустой стол.

CREATE EXTERNAL TABLE  tableName 
PARTITIONED BY (ingestiondatetime BIGINT, recordtype STRING)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serd2.avro.AvroSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
TABLEPROPERTIES ('avro.schema.url'='hdfs:///user/file.avsc');

Когда я добавляю строку LOCATION, чтобы указать на фактическое расположение файла avro, я получаю ошибку разрешения

CREATE EXTERNAL TABLE  tableName 
PARTITIONED BY (ingestiondatetime BIGINT, recordtype STRING)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serd2.avro.AvroSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
LOCATION '/local/avro_dir/'
TABLEPROPERTIES ('avro.schema.url'='hdfs:///user/file.avsc');

Ошибка

> FAILED:  Error in metadata.....  
> org.apache.hadoop.security.AccessControlException: Permission denied: 
> user=hive, access=WRITE, inode="/" hdfs:supergroup:drwxr-xr-x

Я управляю ульем, как и я. Мои разрешения на hdfs: / широко открыты (777). Где улей пытается написать, что думает, что у него нет разрешения?


person Pooge    schedule 08.10.2014    source источник
comment
не могли бы вы показать полный запрос с добавленным местоположением?   -  person Amar    schedule 08.10.2014


Ответы (3)


Он пытается сделать это как пользователь улья.

Вот ошибка и что он пытается вам сказать

В доступе отказано: пользователь = куст, доступ = ЗАПИСЬ, inode = "/" hdfs: супергруппа: drwxr-xr-x

Исключение сообщает вам: кто это делает: user = hive, что пытается сделать пользователь: access = WRITE, к чему осуществляется доступ: inode = "/" разрешения расположения: hdfs: supergroup: drwxr-xr-x

запустите hadoop fs -ls -la /

Описанные вами разрешения (777) не отражаются в сообщении об ошибке. разрешения в сообщении об ошибке предполагают, что все имеют права на чтение и выполнение, но не на запись.

Как заявляет Амар, было бы полезно увидеть полную команду!

Если бы это был я, это было бы потому, что у меня была опечатка в местоположении, и hive пытался создать каталог.

если запустить hadoop fs -ls [your LOCATION property ] .. существует ли локация?

Удачи!

Брайан

person brian chandley    schedule 09.10.2014

TABLEPROPERTIES должно быть TBLPROPERTIES.

Также для тех, кто использует API, ";" не допускается, по крайней мере, с моей версией Spark and Hive, но вы знаете, как быстро это меняется.

person Picarus    schedule 25.09.2015

ваш текущий пользователь - куст, у которого нет прав на запись для inode = "/"

перед запуском куста из командной строки попробуйте изменить текущего пользователя ur на hdfs, написав

экспорт HADOOP_USER_NAME = hdfs

person Aryan Singh    schedule 14.07.2016