hadoop - 使用远程元存储在亚马逊 EMR 中创建 s3 外部表
问题描述
我们最近开始在一个新项目(版本 emr-5.11.0)中使用 Amazon EMR。我们在 EMR 集群中进行了一些架构更改
1) 我们将 metastore 移动到另一个 Postgres 实例而不是默认的 mysql/derby
2) 在不同的实例(不是亚马逊 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 表之外的所有操作。从直线和 hive CLI 尝试了所有操作
解决方案
推荐阅读
- c++ - 如何防止模板类的实例化?
- scala - Scala Spark:(org.apache.spark.repl.ExecutorClassLoader)无法检查路径上 REPL 类服务器上的类 org 的存在
- c - 您如何解释我的 C 哈希函数(Fowler–Noll–Vo_hash_function 的类型)的行为?
- wireshark - 无法读取从移动设备发送的数据..在 WireShark 中显示无法识别的文本
- javascript - Pug 文件无法识别 jQuery
- c - 执行 execvp 时如何不从选项卡中取出空行
- matlab - 从 matlab 中的 imfindcircles 检测到的麦田怪圈
- node.js - 如何无限填充 mongoDB 模型?
- c# - log4net 没有写入两个 RollingFileAppenders
- spring - 使用 Spring WebClient 解码内容编码 gzip