我目前有个Flink job,执行完所以业务逻辑后生成了一些业务数据,然后将这些数据以ORC格式写到hdfs上,并调用hive api 将orc文件load到Hive表,至此flink job的工作结束。
后面,其他Java定时程序做Mapreduce,对上一步写进hive的数据进行后续操作。
现在升级了Flink版本,Flink可以直接操作hive,不再依赖于Mapreduce。
但这样一来,是不是需要两个flink job ,一个用来生成业务数据,一个用来操作hive 来处理这些业务数据
因为两个job的执行环境不一样,如果不操作hive,是这样的操作环境
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
....
env.execute("my job");
如果操作hive,就需要构造这样的操作的环境
EnvironmentSettings settings = EnvironmentSettings.newInstance().inBatchMode().build();
TableEnvironment tableEnv = TableEnvironment.create(settings);
......
tableEnv.executeSql(hql);
有没有什么通用的方案,让这两个job合二为一呢?我想要的效果时,当生成完业务数据后,直接操作hive,取代mapreduce的工作。*来自志愿者整理的flink邮件归档
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。