问题描述
我正在尝试在 Hivemetastore 上创建一个侦听器,我需要在其中检索提交给 metastore 的查询。有没有办法检索查询字符串?
在 MetatstoreListener 中,我们获得 onCreate
、onDelete
等事件。
可以在 hive 上有 postHook
,但需要在 metastore 上有侦听器,以便从任何地方捕获执行所有 DDL 命令
有什么方法可以捕获 metastore 中的事件并将相同的事件应用到另一个并行 metastore 设置中?
上下文:- 我正在尝试将配置单元从 1.x
版本升级到 3.x.x
其想法是在 Kubernetes 中对 metastore-service 进行无状态设置。
但不确定两个版本之间的查询语法有多少兼容。所以想并行设置hot-hot setup并监控查询结果。那么,metastoreListener 上是否有任何方法可以将 DDL
事件从一个 metastore 传输到另一个 metastore 并同时执行?
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hive.metastore.events.AlterTableEvent;
import org.apache.hadoop.hive.metastore.metastoreEventListener;
import org.apache.hadoop.hive.metastore.events.CreateTableEvent;
import org.apache.hadoop.hive.metastore.api.MetaException;
import org.codehaus.jackson.map.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.time.LocalDateTime;
public class HivemetastoreListener extends metastoreEventListener {
private static final Logger LOGGER = LoggerFactory.getLogger(HivemetastoreListener.class);
private static final ObjectMapper objMapper = new ObjectMapper();
private final DataProducer dataProducer = DataProducer.getInstance();
public HivemetastoreListener(Configuration config) {
super(config);
}
/**
* Handler for a CreateTable Event
*/
@Override
public void onCreateTable(CreateTableEvent tableEvent) throws MetaException{
super.onCreateTable(tableEvent);
try {
String data = null;
dataProducer.producetoKafka("metastore_topic",LocalDateTime.Now().toString(),data);
}catch (Exception e) {
System.out.println("Error:- " + e);
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)