开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

请问flink写hive,按小时分区,如果某个小时内一条数据都没有,那该小时对应的hdfs的目录路径

请问flink写hive,按小时分区,如果某个小时内一条数据都没有,那该小时对应的hdfs的目录路径会产生吗?

展开
收起
十一0204 2023-04-11 09:03:38 258 0
3 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    如果某个小时内没有数据,则对应的HDFS目录路径不会被创建。只有在有数据写入时,才会自动创建对应的目录路径。这是因为Flink写Hive时,是通过Hive的分区机制来实现按小时分区的,而Hive分区的目录是在数据写入时自动创建的。如果某个小时没有数据写入,则对应的分区目录也不会被创建。

    2023-04-26 22:41:53
    赞同 展开评论 打赏
  • 意中人就是我呀!

    没数据就不会产生目录路径。此答案整理自钉群“【③群】Apache Flink China社区”

    2023-04-12 08:47:41
    赞同 展开评论 打赏
  • 坚持这件事孤独又漫长。
    • 如果某个小时内没有数据,那么根据你的flink代码生成的Hive表的按小时分区的定义,对应的HDFS目录路径是不会被创建的。这时候,通过查询Hive表,也是无法获取到该小时的数据的。

    • 在生成Hive表的DDL语句中,可以添加如下语句,让空分区的目录路径也被创建出来。

    TBLPROPERTIES("hive.exec.dynamic.partition"="true",
                  "hive.exec.dynamic.partition.mode"="nonstrict",
                  "hive.exec.max.dynamic.partitions"="100000",
                  "hive.exec.max.dynamic.partitions.pernode"="100000",
                  "hive.exec.max.created.files"="100000",
                  "hive.error.on.empty.partition"="false")
    

    其中,"hive.error.on.empty.partition"="false"指定了当分区数据为空时,不抛出错误,而是创建空目录。

    2023-04-11 11:19:38
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Hive Bucketing in Apache Spark 立即下载
    spark替代HIVE实现ETL作业 立即下载
    2019大数据技术公开课第五季—Hive迁移到MaxCompute最佳实践 立即下载