Flink 操作hive 一些疑问

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Flink 操作hive 一些疑问

Jacob
This post was updated on .
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/
Thanks!
Jacob
Reply | Threaded
Open this post in threaded view
|

Re: Flink 操作hive 一些疑问

Rui Li
Hi,

是说写数据的是一个流作业,读数据的是一个批作业么?

On Tue, Dec 22, 2020 at 5:51 PM Jacob <[hidden email]> 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
Reply | Threaded
Open this post in threaded view
|

Re: Flink 操作hive 一些疑问

Jacob
Hi,

谢谢回复

对,也可以这样理解,总体分为两部分,先处理流消息,每隔15min写进hive表。然后再做mapreduce处理上步15min的数据。
     
目前的现状是:
第一步用flink处理,第二步是一个定时job去处理上一步的数据。
   
改善计划:

想整合这两步,都使用flin处理,flink新版本对hive有支持,就不用再使用MapReduce了,现在就是不知道怎样平滑地在同一个Job中执行。




-----
Thanks!
Jacob
--
Sent from: http://apache-flink.147419.n8.nabble.com/
Thanks!
Jacob
Reply | Threaded
Open this post in threaded view
|

Re: Flink 操作hive 一些疑问

Rui Li
不太确定是不是能整合到一个job里,你可以试试看用StatementSet能否实现,比如添加两条INSERT语句,一条是写入hive,一条是从hive里查询数据把结果写到其他的表。

On Thu, Dec 24, 2020 at 4:35 PM Jacob <[hidden email]> 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