使用云上的Flink读取本地的HDFS,目前直接读取HDFS是通过Flink用户,是否什么配置,可以把读取HDFS的用户设置成hive或者hadoop?
在使用Flink读取HDFS上的数据时,可以使用Hadoop的WebHDFS协议或者Hive的Metastore来获取数据。这两种方式都需要使用Hadoop或者Hive的用户和密码。
如果你想将读取HDFS的用户设置为Hive或者Hadoop,你需要在Flink的配置文件中设置相应的参数。具体来说,你可以设置fs.hdfs.impl
和hive.metastore.client.factory.class
参数,分别指定使用WebHDFS协议和Hive Metastore的用户和密码。
以下是一些基本的步骤:
Map<String, String> hdfsAuthConf = new HashMap<>();
hdfsAuthConf.put("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");
hdfsAuthConf.put("fs.hdfs.auth.username", "hadoopuser");
hdfsAuthConf.put("fs.hdfs.auth.password", "password");
Configuration conf = new Configuration();
conf.set("hive.metastore.client.factory.class", "com.google.inject.name.NamedInstance");
conf.set("hive.metastore.client.factory.config.resource", "hive-site.xml");
conf.set("hive.metastore.uris", "thrift://localhost:9083");
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.getConfig().setGlobalJobProperties(hdfsAuthConf);
env.getConfig().setConfiguration(conf);
fs.hdfs.impl
和hive.metastore.client.factory.class
参数,并引用JavaProperties对象。execution-mode: batch
parallelism: 1
fs.hdfs.impl: "org.apache.hadoop.hdfs.DistributedFileSystem"
fs.hdfs.auth.username: "hadoopuser"
fs.hdfs.auth.password: "password"
hive.metastore.client.factory.class: "com.google.inject.name.NamedInstance"
hive.metastore.client.factory.config.resource: "hive-site.xml"
hive.metastore.uris: "thrift://localhost:9083"
# 引用JavaProperties对象
jobmanager.rpc.address: "node-1"
jobmanager.rpc.port: "9241"
这样,你就可以使用Hadoop或者Hive的用户和密码来读取HDFS上的数据了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。