Hadoop 使用远程元存储在amazon EMR中创建s3外部表

Hadoop 使用远程元存储在amazon EMR中创建s3外部表,hadoop,amazon-s3,hive,amazon-emr,hcatalog,Hadoop,Amazon S3,Hive,Amazon Emr,Hcatalog,我们最近开始在一个新项目(版本EMR-5.11.0)中使用AmazonEMR。我们在EMR集群中进行了一些架构更改 1) 我们将metastore移动到另一个Postgres实例,而不是默认的mysql/derby 2) 在不同的实例(不属于amazon EMR集群)中运行metastore服务,并在hive-site.xml中进行了必要的更改 电子病历 stop hive-hcatalog-server 在新的情况下 hive --service metastore 除了“s3外部表”之外

我们最近开始在一个新项目(版本EMR-5.11.0)中使用AmazonEMR。我们在EMR集群中进行了一些架构更改

1) 我们将metastore移动到另一个Postgres实例,而不是默认的mysql/derby

2) 在不同的实例(不属于amazon EMR集群)中运行metastore服务,并在hive-site.xml中进行了必要的更改

电子病历

stop hive-hcatalog-server
在新的情况下

hive --service metastore
除了“s3外部表”之外,其他一切都正常工作。当我尝试创建一个外部s3表时,它会给我们一个错误,如下所示

message:java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hadoop.fs.s3a.S3AFileSystem not found
我们尝试使用s3/s3n/s3a,并使用凭据创建外部表。如果我们在EMR主节点内运行metastore服务并运行相同的查询,则该服务可以正常工作。 我们是否需要在metastore实例中进行任何配置/添加额外的库才能工作


注意:metastore实例同时具有Apache hadoop和hive最新二进制文件。我们使用HDFS文件系统。能够执行除外部s3表之外的所有操作。尝试了beeline和hive CLI中的所有操作。

hadoop类路径中的所有机器上是否都有
hadoop aws
库?我有hive和hadoop repo安装在所有机器上。从哪里可以找到hadoop aws特定的JAR?请参阅本页