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

1.13.6版本 flink sql 写hive 任务正常,hdfs上有文件,但是发现缺乏_SU

1.13.6版本 flink sql 写hive 任务正常,hdfs上有文件,但是发现缺乏_SUCCESS 标记文件,与hive分区也没有创建 ,有谁知道什么原因?

展开
收起
游客3oewgrzrf6o5c 2022-06-28 10:06:16 764 0
1 条回答
写回答
取消 提交回答
  • 十分耕耘,一定会有一分收获!

    楼主你好,在将Flink SQL任务写入Hive表时,确保要遵循以下几个步骤:

    1. 在Flink任务中设置Hive配置:Flink SQL任务写入Hive表需要使用Hive metastore,因此需要在Flink任务中设置Hive相关配置,包括Hive metastore的地址、用户名、密码等。示例代码如下:

      StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
      StreamTableEnvironment tEnv = StreamTableEnvironment.create(env);
      tEnv.getConfig().getConfiguration().setString("table.exec.hive.metastore.uris", "thrift://<metastore_host>:9083");
      tEnv.getConfig().getConfiguration().setString("table.exec.hive.metastore.username", "<hive_username>");
      tEnv.getConfig().getConfiguration().setString("table.exec.hive.metastore.password", "<hive_password>");
      
    2. 在Flink任务中创建Hive表:在Flink任务中创建Hive表,需要指定表的名称、字段、分区等信息,并且需要在表创建之前先创建分区。示例代码如下:

      CREATE TABLE hive_table (
        id INT,
        name STRING,
        age INT
      ) PARTITIONED BY (dt STRING, hr STRING) STORED AS PARQUET TBLPROPERTIES ('partition.time-extractor.timestamp-pattern'='$dt $hr:00:00');
      
      ALTER TABLE hive_table ADD IF NOT EXISTS PARTITION (dt='2022-01-01', hr='00');
      
    3. 在Flink任务中将数据写入Hive表:在Flink任务中将数据写入Hive表,需要指定表的名称、分区等信息。示例代码如下:

      INSERT INTO hive_table PARTITION (dt='2022-01-01', hr='00')
      SELECT id, name, age FROM source_table;
      

    根据您的描述,您的Flink任务已经成功将数据写入HDFS,但是缺少_SUCCESS标记文件,并且Hive分区也没有被创建。这可能是以下几个原因导致的:

    1. 权限问题:在将数据写入HDFS和Hive时,需要确保具有足够的权限。请确保Flink任务运行的用户具有写入HDFS和Hive的权限。

    2. 配置问题:在将数据写入Hive时,需要在Flink任务中正确配置Hive metastore的地址、用户名、密码等信息。请确保配置信息正确。

    3. 分区信息不匹配:在将数据写入Hive分区时,需要确保分区信息与表定义一致。请检查Flink任务中分区信息的定义是否与Hive表一致。

    4. Hive metastore问题:在将数据写入Hive时,需要使用Hive metastore,如果metastore出现问题,可能会导致写入失败。请检查Hive metastore的状态,并确保正常运行。

    针对以上可能导致数据写入Hive失败的原因,您可以尝试以下排查和解决方法:

    1. 检查Flink任务运行的用户是否具有写入HDFS和Hive的权限。

    2. 检查Flink任务中Hive metastore的配置信息是否正确。

    3. 检查Flink任务中分区信息的定义是否与Hive表一致。

    4. 检查Hive metastore的状态,并确保正常运行。

    2023-07-23 13:00:07
    赞同 展开评论 打赏

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

相关产品

  • 实时计算 Flink版
  • 热门讨论

    热门文章

    相关电子书

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