如何在 HiveMetastoreListener 中检索查询字符串?

问题描述

我正在尝试在 Hivemetastore 上创建一个侦听器,我需要在其中检索提交给 metastore查询。有没有办法检索查询字符串? 在 MetatstoreListener 中,我们获得 onCreateonDelete 等事件。 可以在 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 (将#修改为@)