Flink集成Hive案例

本文记录了在使用Flink进行Hive集成时遇到的问题及解决方案,包括两种不同的实现方式:通过FlinkSql-Hive-SqlDialect和不使用SqlDialect。详细介绍了所需的依赖配置和参数设置。
摘要由CSDN通过智能技术生成

最近在使用Flink集成Hive,遇到不少问题,这里记录一下代码案例,供大家参考

方式一: 使用 FlinkSql-Hive-SqlDialect (sql方言)

        // 设置用户为 hadoop 访问 hdfs
        System.setProperty("HADOOP_USER_NAME", "your_user_name");
        // 执行环境
        StreamTableEnvironment tableEnv = FlinkUtils.getTableEnv();

        // 配置 HiveCatalog
        String catalog_name = "myhive";
        String defaultDatabase = "ods";

        // 指向包含 hive-site.xml 目录的 URI
        String hiveConfDir = "src\\main\\resources";

        //  设置 及 注册 HiveCatalog
        HiveCatalog hive = new HiveCatalog(catalog_name, defaultDatabase, hiveConfDir);
        tableEnv.registerCatalog("myhive", hive);
        // 将HiveCatalog设置为 当前Catalog
        tableEnv.useCatalog(catalog_name);


        // 设置 hive方言
        tableEnv.getConfig().setSqlDialect(SqlDialect.HIVE);

        // 注册 hive-sink-table
        tableEnv.executeSql(
                "CREATE TABLE IF NOT EXISTS tb_test (       " +
                        "     semesterId     STRING,        " +
                        "     teacherId      STRING,        " +
                        "     courseId       STRING         " +
                        " ) partitioned by (dt STRING)      " +
                        " STORED AS parquet                                                 " +
                        " TBLPROPERTIES (                                                   " +
                        "  'partition.time-extractor.timestamp-pattern' = '$dt',            " +
                        "  'sink.partition-commit.trigger' = 'process-time',                " +
                        "  'sink.partition-commit.delay' = '0 s',                           " +
                        "  'sink.partition-commit.policy.kind' = 'metastore,success-file'   " +
                        " ) " );


        // 切换flink-sql模式
        tableEnv.getConfig().setSqlDialect(SqlDialect.DEFAULT);

        // 注册 kafka-source
        tableEnv.executeSql(
                "CREATE TABLE IF NOT EXISTS kafka_test ( " +
                        "     semesterId     STRING,   " +
                        "     teacherId      STRING,   " +
                        "     courseId       STRING    " +
                        " )  with (                                                      " +
                        "  'connector' = 'kafka',                                        " +
              
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值