#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;