我使用以下Hive Query:
hive> INSERT OVERWRITE LOCAL DIRECTORY "gs:// Google/Storage/Directory/Path/Name" row format delimited fields terminated by ','
select * from <HiveDatabaseName>.<HiveTableName>;
我收到以下错误:
"Error: Failed with exception Wrong FS:"gs:// Google/Storage/Directory/PathName", expected: file:///
我可能做错了什么?
答案 0 :(得分:2)
从语法中删除Local
。
请参阅以下语法
INSERT OVERWRITE DIRECTORY 'gs://Your_Bucket_Path/'
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LINES TERMINATED BY "\n"
SELECT * FROM YourExistingTable;
答案 1 :(得分:0)
Hive中存在一个错误,包括IIRC Hive 1.2.1,即使表路径位于不同的文件系统中,它也会使用已配置的fs.default.name
或fs.defaultFS
作为其scratchdir。在您的情况下,您似乎已经设置了fs.defaultFS
到file:///
的开箱即用默认设置,这就是为什么它会显示“expected:file:///”。在分布式Hadoop集群上,您可能会看到它说“expected:hdfs:// ...”而不是。
您可以通过覆盖fs.default.name
和fs.defaultFS
在单个配置单元提示中修复它:
> set fs.default.name=gs://your-bucket/
> set fs.defaultFS=gs://your-bucket/
您可能还想修改core-site.xml
文件中的这些条目,使其指向您的GCS位置,以便更轻松。