Hive INSERT OVERWRITE в Google Storage, поскольку локальная директория не работает
Я использую следующий Hive Query: hive> INSERT OVERWRITE LOCAL DIRECTORY "gs:// Google/Storage/Directory/Path/Name" поля с разделителями в формате строки, оканчивающиеся на ',' select * from .;
Я получаю следующее сообщение об ошибке "Ошибка: сбой за исключением неправильной FS:"gs:// Google/Storage/Directory/PathName", ожидается: file: ///
Что я могу делать не так?
2 ответа
Удалить Local
из вашего синтаксиса. Смотрите ниже синтаксис
INSERT OVERWRITE DIRECTORY 'gs://Your_Bucket_Path/'
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LINES TERMINATED BY "\n"
SELECT * FROM YourExistingTable;
В Hive есть ошибка, в том числе IIRC Hive 1.2.1, где он использует настроенный fs.default.name
или же fs.defaultFS
для его scratchdir, даже если путь к таблице находится в другой файловой системе. В вашем случае, кажется, у вас есть настройки по умолчанию fs.defaultFS
в file:///
Вот почему он говорит "ожидается: файл:///". В распределенном кластере Hadoop вы можете увидеть, что вместо него написано "ожидается: hdfs://...".
Вы можете исправить это в одной подсказке улья, переопределив fs.default.name
а также fs.defaultFS
:
> set fs.default.name=gs://your-bucket/
> set fs.defaultFS=gs://your-bucket/
Вы также можете изменить эти записи в вашем core-site.xml
файл, чтобы указать на ваше местоположение GCS, чтобы сделать это проще.