Отказано в разрешении на исключение HiveAccessControlException: у пользователя [hive] нет [ВСЕХ] привилегий на [hdfs://песочница -….: 8020/пользователь/..] (состояние=42000,код=40000)

#hadoop #hive #permission-denied #hortonworks-sandbox

Вопрос:

Когда я пытаюсь загрузить CSV-файл из локального hadoop в песочнице в таблицу hive, я получаю следующее исключение

 LOCATION 'hdfs://sandbox-hdp.hortonworks.com:8020/user/maria_dev/practice';                                                                 
Error: Error while compiling statement: FAILED: HiveAccessControlException Permission denied: user [hive] does not have [ALL] privilege on [hdfs://sandbox-hdp.hortonworks.com:8020/user/ma
ria_dev/practice] (state=42000,code=40000)       
 

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

 CREATE TABLE Sales_transactions(
Transaction_date DATE,
Product STRING,
Price FLOAT,
Payment_Type STRING,
Name STRING,
City STRING,
State STRING,
Country STRING,
Account_Created TIMESTAMP,
Last_Login TIMESTAMP,
Latitude FLOAT,
Longitude FLOAT,
Zip STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE
**LOCATION 'hdfs://sandbox-hdp.hortonworks.com:8020/user/maria_dev/practice';** //Error pointing this line.
 

Ответ №1:

На самом деле это двухэтапный процесс, и я думаю, что вы пропустили шаг 1.(При условии, что у вашего пользователя есть все необходимые права доступа.)
Шаг 1 — Загрузите локальный файл в файловую систему hdfs.

 hdfs dfs -put /~/Sales_transactions.csv hdfs://sandbox-hdp.hortonworks.com:8020/user/maria_dev/practice`  
 

Шаг 2 — Затем загрузите данные hdfs выше в таблицу.

 load data inpath 'hdfs://sandbox-hdp.hortonworks.com:8020/user/maria_dev/practice/Sales_transactions.csv' into table myDB.Sales_transactions_table
 

Поочередно вы можете использовать и это —

LOAD DATA LOCAL INPATH '/~/Sales_transactions.csv' INTO TABLE mydb.Sales_transactions_table;