我正在尝试将postgresql db设置为AWS EMR的外部Hive元存储。 我曾尝试将其托管在EC2和RDS上。
我已经尝试过here给出的步骤。
但是它没有通过,EMR仅在带有消息的情况下失败
在主实例(实例ID)上,应用程序设置失败
我无法从故障日志中解密任何内容。
我还在路径中复制了postgresql jdbc jar
/ usr / lib / hive / lib /和/ usr / lib / hive / jdbc / 如果EMR还没有,但是仍然没有帮助!
然后我通过手动编辑hive-site.xml
并设置属性来设置系统:
javax.jdo.option.ConnectionURL
javax.jdo.option.ConnectionDriverName
javax.jdo.option.ConnectionUserName
javax.jdo.option.ConnectionPassword
datanucleus.fixedDatastore
datanucleus.schema.autoCreateTables
并且必须运行hive --service metatool -listFSRoot
。
完成这些手动设置后,我可以使用EMR来将postgres db用作远程元存储。
有什么办法可以使用官方文档中提到的配置文件使它正常工作?
编辑: 我用于远程mysql metastore的配置设置:
分类=蜂巢站点,属性= [javax.jdo.option.ConnectionURL = jdbc:mysql:// [主机]:3306 / [dbname]?createDatabaseIfNotExist = true,javax.jdo.option.ConnectionDriverName = org。 mariadb.jdbc.Driver,javax.jdo.option.ConnectionUserName = [user],javax.jdo.option.ConnectionPassword = [pass]]
答案 0 :(得分:0)
在EMR启动时,我永远找不到一种干净的方法来配置它。
主要问题是EMR使用以下命令通过MySQL初始化架构:
/usr/lib/hive/bin/schematool -initSchema -dbType MySQL
对于我们的案例应该是postgres。
以下手动步骤允许您将postgres配置为外部metastore:
1)在默认配置下,通过配置单元应用程序启动EMR集群。
2)使用命令停止配置单元:
sudo stop hive-server2
3)将postgresql-jdbc jar(存储在S3的某些位置)复制到EMR上的/usr/lib/hive/lib/
4)用包含在EC2节点上运行的Postgresql的JDO配置的自定义项覆盖/usr/lib/hive/conf/
中的默认hive-site.xml。
5)执行命令:
sudo /usr/lib/hive/bin/schematool -upgradeSchema -dbType postgres