Hive INSERT OVERWRITE到Google Storage,因为LOCAL DIRECTORY无法正常工作

时间:2015-09-25 09:16:05

标签: hadoop hive google-cloud-storage google-hadoop

我使用以下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:///

我可能做错了什么?

2 个答案:

答案 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.namefs.defaultFS作为其scratchdir。在您的情况下,您似乎已经设置了fs.defaultFSfile:///的开箱即用默认设置,这就是为什么它会显示“expected:file:///”。在分布式Hadoop集群上,您可能会看到它说“expected:hdfs:// ...”而不是。

您可以通过覆盖fs.default.namefs.defaultFS在单个配置单元提示中修复它:

> set fs.default.name=gs://your-bucket/
> set fs.defaultFS=gs://your-bucket/

您可能还想修改core-site.xml文件中的这些条目,使其指向您的GCS位置,以便更轻松。