Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Z
ZHHT-IRN-BD-ANALYSIS
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
李凯旋
ZHHT-IRN-BD-ANALYSIS
Commits
7439d07b
Commit
7439d07b
authored
Jan 09, 2023
by
黄准
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
3ff6f5bf
fe9d48ad
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
66 additions
and
7 deletions
+66
-7
TravelLineSinkInfoFlatMapFunction.java
...zhht/irn/functions/TravelLineSinkInfoFlatMapFunction.java
+41
-0
TravelSituationAnalysisJob.java
...ain/java/com/zhht/irn/job/TravelSituationAnalysisJob.java
+17
-7
doris-connector-travel-situation.properties
...ain/resources/doris-connector-travel-situation.properties
+8
-0
No files found.
realtime/hologram-streaming/src/main/java/com/zhht/irn/functions/TravelLineSinkInfoFlatMapFunction.java
0 → 100644
View file @
7439d07b
package
com
.
zhht
.
irn
.
functions
;
import
com.zhht.irn.entity.dto.TravelLineSinkInfo
;
import
org.apache.flink.api.common.functions.FlatMapFunction
;
import
org.apache.flink.util.Collector
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
java.util.List
;
/**
* TravelLineSinkInfoFlatMapFunction
*
* @author Rui meng
* @description 行车情况切分为字符串
* @date 2023/1/9 16:42
*/
public
class
TravelLineSinkInfoFlatMapFunction
implements
FlatMapFunction
<
List
<
TravelLineSinkInfo
>,
String
>
{
@Override
public
void
flatMap
(
List
<
TravelLineSinkInfo
>
travelLineSinkInfos
,
Collector
<
String
>
collector
)
throws
Exception
{
//TODO 这里的时间使用数据携带的时间,使用最后进入路口车辆的时间,这样在补数据时,可以补充到对应的分区下
Date
date
=
new
Date
();
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
SimpleDateFormat
sdf2
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
String
statistic_time
=
sdf
.
format
(
date
);
for
(
TravelLineSinkInfo
t:
travelLineSinkInfos
)
{
// 使用事件数据的时间划分数据分区,这样可以进行补数操作
String
record_date
=
sdf2
.
format
(
t
.
getLast_car_inCross_time
());
// String record_date = "2023-01-09";
collector
.
collect
(
record_date
+
"\t"
+
t
.
getCross_id
()+
"\t"
+
statistic_time
+
"\t"
+
t
.
getCycle_begin_time
()+
"\t"
+
t
.
getCycle_end_time
()
+
"\t"
+
t
.
getLane_id
()+
"\t"
+
t
.
getCycle_id
()+
"\t"
+
t
.
getDirection
()+
"\t"
+
t
.
getFlow_direction
()+
"\t"
+
t
.
getPass_numbers
()
+
"\t"
+
t
.
getLast_car_inCross_time
()+
"\t"
+
t
.
getAverage_pass_time
()+
"\t"
+
t
.
getAverage_pass_speed
()+
"\t"
+
t
.
getAverage_control_delay
()
+
"\t"
+
t
.
getAverage_stop_delay
()+
"\t"
+
t
.
getAverage_stop_times
()+
"\t"
+
t
.
getAverage_car_head_time_gap
());
}
}
}
realtime/hologram-streaming/src/main/java/com/zhht/irn/job/TravelSituationAnalysisJob.java
View file @
7439d07b
...
@@ -6,11 +6,14 @@ import com.zhht.irn.entity.dto.TravelInfo;
...
@@ -6,11 +6,14 @@ import com.zhht.irn.entity.dto.TravelInfo;
import
com.zhht.irn.entity.dto.TravelLineSinkInfo
;
import
com.zhht.irn.entity.dto.TravelLineSinkInfo
;
import
com.zhht.irn.functions.TravelCarInfoCoProcessFunction
;
import
com.zhht.irn.functions.TravelCarInfoCoProcessFunction
;
import
com.zhht.irn.functions.TravelEventAndCycleCoProcessFunction
;
import
com.zhht.irn.functions.TravelEventAndCycleCoProcessFunction
;
import
com.zhht.irn.functions.TravelLineSinkInfoFlatMapFunction
;
import
com.zhht.irn.schema.CycleSignalKafkaSchema
;
import
com.zhht.irn.schema.CycleSignalKafkaSchema
;
import
com.zhht.irn.schema.TravelEventKafkaSchema
;
import
com.zhht.irn.schema.TravelEventKafkaSchema
;
import
com.zhht.irn.schema.TravelInfoKafkaSchema
;
import
com.zhht.irn.schema.TravelInfoKafkaSchema
;
import
com.zhht.irn.sink.TravelLaneInfoSink
;
import
com.zhht.irn.sink.TravelLaneInfoSink
;
import
com.zhht.irn.utils.DorisUtils
;
import
com.zhht.irn.utils.DorisUtils
;
import
org.apache.doris.flink.sink.DorisSink
;
import
org.apache.flink.api.common.functions.FlatMapFunction
;
import
org.apache.flink.api.common.restartstrategy.RestartStrategies
;
import
org.apache.flink.api.common.restartstrategy.RestartStrategies
;
import
org.apache.flink.api.common.serialization.SimpleStringSchema
;
import
org.apache.flink.api.common.serialization.SimpleStringSchema
;
import
org.apache.flink.api.common.time.Time
;
import
org.apache.flink.api.common.time.Time
;
...
@@ -24,6 +27,7 @@ import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
...
@@ -24,6 +27,7 @@ import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import
org.apache.flink.streaming.api.environment.CheckpointConfig
;
import
org.apache.flink.streaming.api.environment.CheckpointConfig
;
import
org.apache.flink.streaming.api.environment.StreamExecutionEnvironment
;
import
org.apache.flink.streaming.api.environment.StreamExecutionEnvironment
;
import
org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer
;
import
org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer
;
import
org.apache.flink.util.Collector
;
import
org.apache.kafka.clients.consumer.ConsumerConfig
;
import
org.apache.kafka.clients.consumer.ConsumerConfig
;
...
@@ -65,7 +69,7 @@ public class TravelSituationAnalysisJob {
...
@@ -65,7 +69,7 @@ public class TravelSituationAnalysisJob {
env
.
getCheckpointConfig
().
setExternalizedCheckpointCleanup
(
CheckpointConfig
.
ExternalizedCheckpointCleanup
.
RETAIN_ON_CANCELLATION
);
env
.
getCheckpointConfig
().
setExternalizedCheckpointCleanup
(
CheckpointConfig
.
ExternalizedCheckpointCleanup
.
RETAIN_ON_CANCELLATION
);
//设置重启策略 这里不设置重启策略,由平台统一拉起任务
//设置重启策略 这里不设置重启策略,由平台统一拉起任务
//
env.setRestartStrategy(RestartStrategies.fixedDelayRestart(10, Time.seconds(30)));
//env.setRestartStrategy(RestartStrategies.fixedDelayRestart(10, Time.seconds(30)));
env
.
setRestartStrategy
(
RestartStrategies
.
noRestart
());
env
.
setRestartStrategy
(
RestartStrategies
.
noRestart
());
...
@@ -90,16 +94,16 @@ public class TravelSituationAnalysisJob {
...
@@ -90,16 +94,16 @@ public class TravelSituationAnalysisJob {
//旅行信息数据
//旅行信息数据
//
FlinkKafkaConsumer<TravelInfo> travelInfo = new FlinkKafkaConsumer<>("t_info2", new TravelInfoKafkaSchema(), kafkaProperties);
//
FlinkKafkaConsumer<TravelInfo> travelInfo = new FlinkKafkaConsumer<>("t_info2", new TravelInfoKafkaSchema(), kafkaProperties);
FlinkKafkaConsumer
<
TravelInfo
>
travelInfo
=
new
FlinkKafkaConsumer
<>(
"trips_info"
,
new
TravelInfoKafkaSchema
(),
kafkaProperties
);
FlinkKafkaConsumer
<
TravelInfo
>
travelInfo
=
new
FlinkKafkaConsumer
<>(
"trips_info"
,
new
TravelInfoKafkaSchema
(),
kafkaProperties
);
DataStreamSource
<
TravelInfo
>
travelInfoStream
=
env
.
addSource
(
travelInfo
).
setParallelism
(
3
);
DataStreamSource
<
TravelInfo
>
travelInfoStream
=
env
.
addSource
(
travelInfo
).
setParallelism
(
3
);
//周期信号
//周期信号
//
FlinkKafkaConsumer<CycleSignalData> cycleSignalData = new FlinkKafkaConsumer<>("s_data2", new CycleSignalKafkaSchema(), kafkaProperties2);
//
FlinkKafkaConsumer<CycleSignalData> cycleSignalData = new FlinkKafkaConsumer<>("s_data2", new CycleSignalKafkaSchema(), kafkaProperties2);
FlinkKafkaConsumer
<
CycleSignalData
>
cycleSignalData
=
new
FlinkKafkaConsumer
<>(
"signal_cycle_data"
,
new
CycleSignalKafkaSchema
(),
kafkaProperties2
);
FlinkKafkaConsumer
<
CycleSignalData
>
cycleSignalData
=
new
FlinkKafkaConsumer
<>(
"signal_cycle_data"
,
new
CycleSignalKafkaSchema
(),
kafkaProperties2
);
DataStreamSource
<
CycleSignalData
>
cycleSignalDataStream
=
env
.
addSource
(
cycleSignalData
);
DataStreamSource
<
CycleSignalData
>
cycleSignalDataStream
=
env
.
addSource
(
cycleSignalData
);
//2、使用connect,把2个流联合处理
//2、使用connect,把2个流联合处理
ConnectedStreams
<
TravelInfo
,
CycleSignalData
>
connect
=
travelInfoStream
ConnectedStreams
<
TravelInfo
,
CycleSignalData
>
connect
=
travelInfoStream
.
connect
(
cycleSignalDataStream
);
.
connect
(
cycleSignalDataStream
);
...
@@ -112,7 +116,13 @@ public class TravelSituationAnalysisJob {
...
@@ -112,7 +116,13 @@ public class TravelSituationAnalysisJob {
SingleOutputStreamOperator
<
List
<
TravelLineSinkInfo
>>
sinkDataStream
=
travelInfoCycleSignalDataConnectedStreams
SingleOutputStreamOperator
<
List
<
TravelLineSinkInfo
>>
sinkDataStream
=
travelInfoCycleSignalDataConnectedStreams
.
process
(
new
TravelCarInfoCoProcessFunction
()).
setParallelism
(
3
);
.
process
(
new
TravelCarInfoCoProcessFunction
()).
setParallelism
(
3
);
sinkDataStream
.
addSink
(
new
TravelLaneInfoSink
()).
setParallelism
(
3
);
// sinkDataStream.addSink(new TravelLaneInfoSink()).setParallelism(3);
// 获取builder
DorisSink
.
Builder
<
String
>
builder
=
DorisUtils
.
getBuilder
(
"doris-connector-travel-situation.properties"
);
sinkDataStream
.
flatMap
(
new
TravelLineSinkInfoFlatMapFunction
()).
sinkTo
(
builder
.
build
());
env
.
execute
(
"TravelSituationAnalysisJob"
);
env
.
execute
(
"TravelSituationAnalysisJob"
);
...
...
realtime/hologram-streaming/src/main/resources/doris-connector-travel-situation.properties
0 → 100644
View file @
7439d07b
host
=
10.243.0.22
port
=
8030
username
=
root
password
=
mima
database
=
qxlk
table
=
app_cross_line_travel_car_info
label
=
app_cross_line_travel_car_info-import
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment