You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Flink on YARN提交任务时如何指定Hive配置的HDFS路径?

在YARN上用Flink创建Hive分区时指定HDFS路径的Hive配置

答案是可以,你完全可以指定HDFS路径的Hive配置文件夹来解决YARN容器找不到本地配置的问题,下面是具体的实现方法和注意事项:

具体步骤

  • 第一步:上传Hive配置到HDFS
    先把你的hive-site.xmlhive-env.sh等Hive配置文件上传到HDFS的一个固定路径,比如你示例里的hdfs:///warehousestore/hive/warehouse/db/hive_conf/,确保这个路径的权限能让YARN容器正常访问。

  • 第二步:提交任务时指定配置参数
    在通过YARN提交Flink任务的时候,通过-yD参数传递Hive配置的HDFS路径,Flink会自动把配置文件下载到容器本地并加载。示例命令如下:

    flink run -m yarn-cluster \
      -yD hive.conf.dir=hdfs:///warehousestore/hive/warehouse/db/hive_conf/ \
      -yD fs.hdfs.hadoopconf=/etc/hadoop/conf \
      your-partition-creation-job.jar
    

    这里的hive.conf.dir直接指向HDFS上的配置目录;fs.hdfs.hadoopconf指定本地的Hadoop配置目录,保证Flink能正常连接HDFS。

  • 第三步:代码无需额外调整
    因为你只是创建Hive表分区,只要Flink正确加载了Hive配置,不管是用SQL的ALTER TABLE ... ADD PARTITION还是Table API的相关方法,都能正常和Hive元数据交互,不需要修改代码里的路径配置。

额外补充:通过HiveCatalog指定配置

如果你在代码中使用了Flink的HiveCatalog来连接Hive,也可以直接在Catalog的初始化参数里指定HDFS的配置路径,效果一致:

import org.apache.flink.table.catalog.hive.HiveCatalog;

// 初始化HiveCatalog
HiveCatalog hiveCatalog = new HiveCatalog(
    "hive_catalog",          // Catalog名称
    "default",               // 默认数据库
    "hdfs:///warehousestore/hive/warehouse/db/hive_conf/"  // HDFS上的Hive配置目录
);

// 注册并使用Catalog
tableEnv.registerCatalog("hive_catalog", hiveCatalog);
tableEnv.useCatalog("hive_catalog");

这样配置后,Flink在YARN容器中运行时会自动从HDFS拉取配置文件到本地,完美解决本地路径找不到的问题。

内容的提问来源于stack exchange,提问作者patel akash

火山引擎 最新活动