开发者社区> 问答> 正文

flinksql 批模式 写出 hive 不显示

flink 批模式 写出hive 不显示

  1. 流程是 flink批模式使用 TableEnvironment tableEnv 通过hiveCataLog 读取hive数据 ,经过计算处理 ,注册成临时表.
  2. 又设置 tableEnv.getConfig().setSqlDialect(SqlDialect.HIVE);
  3. tableEnv.executeSql("hive建表语句")
  4. tableEnv.executeSql(insert hive语句 );

结果

  1. 运行没有报错,但是数据没有写入到hive中,hdfs中也没有,使用的是批模式 也没有办法开启checkpoint 。
  2. 但是偶发性的 多次运行之后hive有可能会出现一次数据插入成功,hdfs也会保存,但是绝大多数情况下数据并没有插入到hive中,hdfs中也没有,整个过程都没有报错

展开
收起
游客dtkqqfednv6qy 2022-03-01 11:53:24 1867 0
1 条回答
写回答
取消 提交回答
  • flink1.13版本前可参考如下方式:https://blog.csdn.net/m0_37592814/article/details/108044830

    flink1.13之前的版本可以参考上一文章

    https://blog.csdn.net/m0_37592814/article/details/108044830

    flink1.13 版本可以通过如下方式快速解决:

    在创建hive表时 添加参数指定时区为:

    'sink.partition-commit.watermark-time-zone'='Asia/Shanghai'

    SET table.sql-dialect=hive;
    CREATE TABLE hive_table (
      user_id STRING,
      order_amount DOUBLE
    ) PARTITIONED BY (dt STRING, hr STRING) STORED AS parquet TBLPROPERTIES (
      'partition.time-extractor.timestamp-pattern'='$dt $hr:00:00',
      'sink.partition-commit.trigger'='partition-time',
      'sink.partition-commit.delay'='1 h',
      'sink.partition-commit.watermark-time-zone'='Asia/Shanghai', -- Assume user configured time zone is 'Asia/Shanghai'
      'sink.partition-commit.policy.kind'='metastore,success-file'
    );
    
    2022-05-23 12:42:55
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Comparison of Spark SQL with Hive 立即下载
Hive Bucketing in Apache Spark 立即下载
2019大数据技术公开课第五季—Hive迁移到MaxCompute最佳实践 立即下载