У меня есть доступ к кластеру Hadoop, где у меня есть только для чтения доступ к папке hdfs, где находятся данные (в данном случае / data / table1 / data_PART0xxx). Я хотел бы составить ВНЕШНЮЮ таблицу HIVE, которая предоставила бы мне более простой способ запроса данных.
Итак, я создал таблицу следующим образом:
CREATE EXTERNAL TABLE myDB.Table1 (column1 STRING, column2 STRING, column3 STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
"input.regex" = "(.{10})(.{16})(.{10})"
)
LOCATION '/data/table1';
Однако, это дает мне ошибку:
Ошибка: ошибка при компиляции оператора: СБОЙ: HiveAccessControlException Отказано в разрешении: у пользователя [my_user] нет привилегии [ALL] для [hdfs: // hadoopcluster / data / table1] (состояние = 42000, код = 40000)
что я понимаю, я не имею права что-либо писать, но как я могу это сделать, чтобы таблица была явно определена как доступная только для чтения?
Редактировать: я знаю, что могу установить его как СОЗДАТЬ ВРЕМЕННЫЙ ВНЕШНИЙ СТОЛ ... но я бы хотел иметь более постоянное решение. Кроме того, у меня также нет привилегий для установки папки / data / table1 в режим 777. Нет ли способа сообщить HIVE, эта таблица предназначена только для запроса, дальнейшие данные не будут добавляться (по крайней мере, не через HIVE) ).
Редактировать: Более того, я видел билет JIRA для этого с 2009 года, установленный как важный, но все еще не решенный.