You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by Jacob <17...@163.com> on 2020/12/22 09:51:45 UTC
Flink 操作hive 一些疑问
Dear all,
我目前有个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的工作。
-----
Thanks!
Jacob
--
Sent from: http://apache-flink.147419.n8.nabble.com/
Re: Flink 操作hive 一些疑问
Posted by Jacob <17...@163.com>.
Thanks!
还是决定暂时用两个job执行吧
一个job执行流处理生成数据
另一个job(使用flink的hive功能)执行批处理。
主要验证一下第二个job的使用相比MapReduce节省了多少资源
-----
Thanks!
Jacob
--
Sent from: http://apache-flink.147419.n8.nabble.com/
Re: Flink 操作hive 一些疑问
Posted by Rui Li <li...@gmail.com>.
不太确定是不是能整合到一个job里,你可以试试看用StatementSet能否实现,比如添加两条INSERT语句,一条是写入hive,一条是从hive里查询数据把结果写到其他的表。
On Thu, Dec 24, 2020 at 4:35 PM Jacob <17...@163.com> wrote:
> Hi,
>
> 谢谢回复
>
> 对,也可以这样理解,总体分为两部分,先处理流消息,每隔15min写进hive表。然后再做mapreduce处理上步15min的数据。
>
> 目前的现状是:
> 第一步用flink处理,第二步是一个定时job去处理上一步的数据。
>
> 改善计划:
>
> 想整合这两步,都使用flin处理,flink新版本对hive有支持,就不用再使用MapReduce了,现在就是不知道怎样平滑地在同一个Job中执行。
>
>
>
>
> -----
> Thanks!
> Jacob
> --
> Sent from: http://apache-flink.147419.n8.nabble.com/
--
Best regards!
Rui Li
Re: Flink 操作hive 一些疑问
Posted by Jacob <17...@163.com>.
Hi,
谢谢回复
对,也可以这样理解,总体分为两部分,先处理流消息,每隔15min写进hive表。然后再做mapreduce处理上步15min的数据。
目前的现状是:
第一步用flink处理,第二步是一个定时job去处理上一步的数据。
改善计划:
想整合这两步,都使用flin处理,flink新版本对hive有支持,就不用再使用MapReduce了,现在就是不知道怎样平滑地在同一个Job中执行。
-----
Thanks!
Jacob
--
Sent from: http://apache-flink.147419.n8.nabble.com/
Re: Flink 操作hive 一些疑问
Posted by Rui Li <li...@gmail.com>.
Hi,
是说写数据的是一个流作业,读数据的是一个批作业么?
On Tue, Dec 22, 2020 at 5:51 PM Jacob <17...@163.com> wrote:
> Dear all,
>
> 我目前有个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的工作。
>
>
>
> -----
> Thanks!
> Jacob
> --
> Sent from: http://apache-flink.147419.n8.nabble.com/
--
Best regards!
Rui Li