配置单元插入覆盖到google存储,因为本地目录不起作用

kiz8lqtg  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(378)

我使用以下配置单元查询:

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:///

我会做错什么?

7tofc5zh

7tofc5zh1#

hive中有一个bug,包括iirc Hive1.2.1,它使用配置的 fs.default.name 或者 fs.defaultFS 对于它的scratchdir,即使表路径位于不同的文件系统中。在您的情况下,似乎您有现成的默认设置 fs.defaultFSfile:/// ,这就是为什么它说“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 文件指向你的地面军事系统的位置,使它更容易。

eulz3vhy

eulz3vhy2#

删除 Local 从你的语法。请参见下面的语法

INSERT OVERWRITE DIRECTORY 'gs://Your_Bucket_Path/'
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LINES TERMINATED BY "\n" 
SELECT * FROM YourExistingTable;

相关问题