我们在AWS中推出了两个EMR,并在一个EMR和hive-0.13.1中安装了hadoop和hive-0.11.0。
一切似乎都运行正常,但在尝试将数据加载到TABLE时,它会给出以下错误,并且它发生在两个Hive服务器中。
错误消息:
执行SQL命令时发生错误:在路径中加载数据 's3:// buckername / export / employee_1 /'进入表employee_2查询 返回非零代码:10028,原因:FAILED:SemanticException [错误 10028]:第1:17行路径不合法 's3:// buckername / export / employee_1 /'':从以下位置移开: s3:// buckername / export / employee_1: hdfs://XXX.XX.XXX.XX:X000 / mnt / hive_0110 / warehouse / employee_2不是 有效。请检查params“default.fs.name”和的值 “hive.metastore.warehouse.dir”不冲突。 [SQL State = 42000,DB 错误码= 10028]
我搜索了此消息的原因和含义,我发现了link,但是当尝试执行给定link中建议的命令时,它也会给出以下错误。
命令:
--service metatool -updateLocation hdfs://XXX.XX.XXX.XX:X000 hdfs://XXX.XX.XXX.XX:X000
初始化HiveMetaTool .. HiveMetaTool:解析失败。原因: 无法识别的选项:-hiveconf
对此的任何帮助都将非常感激。
答案 0 :(得分:1)
LOAD不支持S3。最好将数据保留在S3中,并将其用作Hive外部表,而不是将数据复制到HDFS。一些参考文献http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-hive-additional-features.html和When you create an external table in Hive with an S3 location is the data transfered?
答案 1 :(得分:0)
如果您在Hadoop集群上安装了配置单元,则配置单元数据的默认存储是HDFS(hive.metastore.warehouse.dir = / user / hive / warehouse)。
作为一种解决方法,您可以将文件从S3文件系统复制到HDFS,然后从HDFS将文件加载到配置单元。
我们可能需要修改参数“hive.exim.uri.scheme.whitelist = hdfs,pfile”来从S3文件系统加载数据。