如何解决如何在 HiveMetastoreListener 中检索查询字符串?
我正在尝试在 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 举报,一经查实,本站将立刻删除。