hive的metastore listener中使用hibernate4 + c3p0 的小坑

hive版本:2.3.9, 定义一个meta store listener jar包, 用来检测ddl数据的变化,随后持久化到db里, 为什么用hibernate4, 本来用5的,但是5需要jboss 3.3 以上才能工作,但是hive2.3.9中已经有3.13了,上线后无法正常工作, 所以只能用4了.

关于hibernate中的connection和session的关系,看别人的回答:
https://www.cnblogs.com/hadoop-dev/p/8276601.html

关于c3p0的小坑, 参考:
https://www.jianshu.com/p/490a956f7624

hibernate.c3p0.idle_test_period: 每过多久检测一下,连接是否alive, 不是的话, 丢掉这个connection.
hibernate.c3p0.testConnectionOnCheckout: 每次从池子中取出连接,使用前检测一下是否可用.

hibernate在使用默认的日志级别的时候,会在每条sql后发送一条show warnings, 有的db会限制一个事务的sql语句条数, 当超出后会:

SQL Error: 1105, SQLState: HY000
statement count 5001 exceeds the transaction limitation, autocommit = false

而且还会降低一些性能, 所以参考https://stackoverflow.com/questions/30926597/why-is-show-warnings-query-issued-here-jpa-hibernate-mysql的意见:
添加了Log4j2.xml , 提高了日志级别, 从而去掉show warnings的sql.

<Configuration status="INFO">
    <Loggers>
        <!--        this is for disable sql: show warning; to db-->
        <logger name="org.hibernate" level="info"/>
        <logger name="org.hibernate.engine.jdbc.spi" level="error"/>
        <logger name="org.hibernate.engine.internal" level="error"/>
    </Loggers>
</Configuration>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容