Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
C
ctr-estimate
Project
Project
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
赵建伟
ctr-estimate
Commits
6a84d617
You need to sign in or sign up before continuing.
Commit
6a84d617
authored
Apr 13, 2020
by
赵建伟
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update codes
parent
75a1f443
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
182 additions
and
29 deletions
+182
-29
ctr_all.sql
libs/ctr_all.sql
+31
-17
CtrPfrCrtMysqlSink.java
src/main/java/com/gmei/data/ctr/sink/CtrPfrCrtMysqlSink.java
+70
-12
StringUtils.java
src/main/java/com/gmei/data/ctr/utils/StringUtils.java
+81
-0
No files found.
libs/ctr_all.sql
View file @
6a84d617
...
...
@@ -53,35 +53,49 @@ CREATE TABLE `device_current_estimate_tag_unplat` (
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
;
-- CTR特征预估最近偏好表
CREATE
TABLE
`device_recently_estimate_view_pfr`
(
CREATE
TABLE
`device_recently_estimate_view_pfr
_new
`
(
`id`
bigint
(
20
)
NOT
NULL
AUTO_INCREMENT
COMMENT
'自增ID'
,
`device_id`
varchar
(
150
)
DEFAULT
NULL
COMMENT
'设备ID'
,
`statistics_type`
varchar
(
150
)
DEFAULT
NULL
COMMENT
'统计类型'
,
`statistics_type_id`
varchar
(
150
)
DEFAULT
NULL
COMMENT
'统计类型id'
,
`project_pfr`
text
COMMENT
'项目偏好'
,
`first_demands_pfr`
text
COMMENT
'一级诉求偏好'
,
`first_positions_pfr`
text
COMMENT
'一级部位偏好'
,
`first_solutions_pfr`
text
COMMENT
'一级方式偏好'
,
`second_demands_pfr`
text
COMMENT
'二级诉求偏好'
,
`second_positions_pfr`
text
COMMENT
'二级部位偏好'
,
`second_solutions_pfr`
text
COMMENT
'二级方式偏好'
,
`project_pfr_recent1`
text
COMMENT
'近一次项目偏好(去重后)'
,
`project_pfr_recent3`
text
COMMENT
'近三次项目偏好(去重后)'
,
`project_pfr_recent10`
text
COMMENT
'近十次项目偏好(去重后)'
,
`first_demands_pfr_recent1`
text
COMMENT
'近一次一级诉求偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)'
,
`first_demands_pfr_recent3`
text
COMMENT
'近三次一级诉求偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)'
,
`first_demands_pfr_recent10`
text
COMMENT
'近十次一级诉求偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)'
,
`first_positions_pfr_recent1`
text
COMMENT
'近一次一级部位偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)'
,
`first_positions_pfr_recent3`
text
COMMENT
'近三次一级部位偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)'
,
`first_positions_pfr_recent10`
text
COMMENT
'近十次一级部位偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)'
,
`first_solutions_pfr_recent1`
text
COMMENT
'近一次一级方式偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)'
,
`first_solutions_pfr_recent3`
text
COMMENT
'近三次一级方式偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)'
,
`first_solutions_pfr_recent10`
text
COMMENT
'近十次一级方式偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)'
,
`second_demands_pfr_recent1`
text
COMMENT
'近一次二级诉求偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)'
,
`second_demands_pfr_recent3`
text
COMMENT
'近三次二级诉求偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)'
,
`second_demands_pfr_recent10`
text
COMMENT
'近十次二级诉求偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)'
,
`second_positions_pfr_recent1`
text
COMMENT
'近一次二级部位偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)'
,
`second_positions_pfr_recent3`
text
COMMENT
'近三次二级部位偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)'
,
`second_positions_pfr_recent10`
text
COMMENT
'近十次二级部位偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)'
,
`second_solutions_pfr_recent1`
text
COMMENT
'近一次二级方式偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)'
,
`second_solutions_pfr_recent3`
text
COMMENT
'近三次二级方式偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)'
,
`second_solutions_pfr_recent10`
text
COMMENT
'近十次二级方式偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)'
,
`last_update_time`
varchar
(
45
)
DEFAULT
NULL
COMMENT
'上一次更改的时间'
,
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
;
-- CTR特征预估
最近
偏好表
CREATE
TABLE
`device_current_estimate_view_pfr`
(
-- CTR特征预估
当日
偏好表
CREATE
TABLE
`device_current_estimate_view_pfr
_new
`
(
`id`
bigint
(
20
)
NOT
NULL
AUTO_INCREMENT
COMMENT
'自增ID'
,
`device_id`
varchar
(
150
)
DEFAULT
NULL
COMMENT
'设备ID'
,
`statistics_type`
varchar
(
150
)
DEFAULT
NULL
COMMENT
'统计类型'
,
`statistics_type_id`
varchar
(
150
)
DEFAULT
NULL
COMMENT
'统计类型id'
,
`project_pfr`
text
COMMENT
'项目偏好'
,
`first_demands_pfr`
text
COMMENT
'一级诉求偏好'
,
`first_positions_pfr`
text
COMMENT
'一级部位偏好'
,
`first_solutions_pfr`
text
COMMENT
'一级方式偏好'
,
`second_demands_pfr`
text
COMMENT
'二级诉求偏好'
,
`second_positions_pfr`
text
COMMENT
'二级部位偏好'
,
`second_solutions_pfr`
text
COMMENT
'二级方式偏好'
,
`project_pfr`
text
COMMENT
'项目偏好
,当天次数累加、偏好去重 eg: (xx:a,yy:b,zz:c)
'
,
`first_demands_pfr`
text
COMMENT
'一级诉求偏好
,当天次数累加、偏好去重 eg: (xx:a,yy:b,zz:c)
'
,
`first_positions_pfr`
text
COMMENT
'一级部位偏好
,当天次数累加、偏好去重 eg: (xx:a,yy:b,zz:c)
'
,
`first_solutions_pfr`
text
COMMENT
'一级方式偏好
,当天次数累加、偏好去重 eg: (xx:a,yy:b,zz:c)
'
,
`second_demands_pfr`
text
COMMENT
'二级诉求偏好
,当天次数累加、偏好去重 eg: (xx:a,yy:b,zz:c)
'
,
`second_positions_pfr`
text
COMMENT
'二级部位偏好
,当天次数累加、偏好去重 eg: (xx:a,yy:b,zz:c)
'
,
`second_solutions_pfr`
text
COMMENT
'二级方式偏好
,当天次数累加、偏好去重 eg: (xx:a,yy:b,zz:c)
'
,
`partition_date`
varchar
(
45
)
DEFAULT
NULL
COMMENT
'日期'
,
`last_update_time`
varchar
(
45
)
DEFAULT
NULL
COMMENT
'上一次更改的时间'
,
PRIMARY
KEY
(
`id`
)
...
...
src/main/java/com/gmei/data/ctr/sink/CtrPfrCrtMysqlSink.java
View file @
6a84d617
...
...
@@ -4,13 +4,11 @@ import com.gmei.data.ctr.bean.CtrPfrCrtBean;
import
com.gmei.data.ctr.common.Constants
;
import
com.gmei.data.ctr.utils.DateUtils
;
import
com.gmei.data.ctr.utils.JDBCUtils
;
import
com.gmei.data.ctr.utils.StringUtils
;
import
org.apache.flink.configuration.Configuration
;
import
org.apache.flink.streaming.api.functions.sink.RichSinkFunction
;
import
java.sql.Connection
;
import
java.sql.DriverManager
;
import
java.sql.SQLException
;
import
java.sql.Statement
;
import
java.sql.*
;
import
java.util.Date
;
/**
...
...
@@ -73,11 +71,70 @@ public class CtrPfrCrtMysqlSink extends RichSinkFunction<CtrPfrCrtBean> {
Statement
statement
=
null
;
Date
date
=
new
Date
();
if
(
null
!=
ctrPfrCrtBean
){
boolean
isExist
=
false
;
String
projectPfr
=
""
;
String
firstDemandsPfr
=
""
;
String
firstPositionsPfr
=
""
;
String
firstSolutionsPfr
=
""
;
String
secondDemandsPfr
=
""
;
String
secondPositionsPfr
=
""
;
String
secondSolutionsPfr
=
""
;
try
{
statement
=
connection
.
createStatement
();
ResultSet
resultSet
=
statement
.
executeQuery
(
String
.
format
(
"select "
+
"project_pfr,"
+
"first_demands_pfr,"
+
"first_positions_pfr,"
+
"first_solutions_pfr,"
+
"second_demands_pfr,"
+
"second_positions_pfr,"
+
"second_solutions_pfr"
+
"from device_current_estimate_view_pfr_new "
+
"where device_id = '%s' and statistics_type = '%s' and statistics_type_id = '%s' and partition_date = '%s'"
,
ctrPfrCrtBean
.
getDeviceId
(),
ctrPfrCrtBean
.
getStatisticsType
(),
ctrPfrCrtBean
.
getStatisticsTypeId
(),
ctrPfrCrtBean
.
getPartitionDate
()
)
);
if
(
resultSet
.
next
()){
isExist
=
true
;
projectPfr
=
resultSet
.
getString
(
"project_pfr"
);
firstDemandsPfr
=
resultSet
.
getString
(
"first_demands_pfr"
);
firstPositionsPfr
=
resultSet
.
getString
(
"first_positions_pfr"
);
firstSolutionsPfr
=
resultSet
.
getString
(
"first_solutions_pfr"
);
secondDemandsPfr
=
resultSet
.
getString
(
"second_demands_pfr"
);
secondPositionsPfr
=
resultSet
.
getString
(
"second_positions_pfr"
);
secondSolutionsPfr
=
resultSet
.
getString
(
"second_solutions_pfr"
);
}
if
(
isExist
){
statement
.
executeUpdate
(
String
.
format
(
"insert into device_current_estimate_view_pfr("
+
"update device_current_estimate_view_pfr_new set "
+
"project_pfr = '%s',"
+
"first_demands_pfr = '%s',"
+
"first_positions_pfr = '%s',"
+
"first_solutions_pfr = '%s',"
+
"second_demands_pfr = '%s',"
+
"second_positions_pfr = '%s',"
+
"second_solutions_pfr = '%s',"
+
"last_update_time = '%s'"
,
StringUtils
.
increasePfr
(
projectPfr
,
ctrPfrCrtBean
.
getProjectPfr
()),
StringUtils
.
increasePfr
(
firstDemandsPfr
,
ctrPfrCrtBean
.
getFirstDemandsPfr
()),
StringUtils
.
increasePfr
(
firstPositionsPfr
,
ctrPfrCrtBean
.
getFirstPositionsPfr
()),
StringUtils
.
increasePfr
(
firstSolutionsPfr
,
ctrPfrCrtBean
.
getFirstSolutionsPfr
()),
StringUtils
.
increasePfr
(
secondDemandsPfr
,
ctrPfrCrtBean
.
getSecondDemandsPfr
()),
StringUtils
.
increasePfr
(
secondPositionsPfr
,
ctrPfrCrtBean
.
getSecondPositionsPfr
()),
StringUtils
.
increasePfr
(
secondSolutionsPfr
,
ctrPfrCrtBean
.
getSecondSolutionsPfr
()),
DateUtils
.
getTimeStr
(
date
)
)
);
}
else
{
statement
.
executeUpdate
(
String
.
format
(
"insert into device_current_estimate_view_pfr_new("
+
"device_id,"
+
"statistics_type,"
+
"statistics_type_id,"
+
...
...
@@ -94,17 +151,18 @@ public class CtrPfrCrtMysqlSink extends RichSinkFunction<CtrPfrCrtBean> {
ctrPfrCrtBean
.
getDeviceId
(),
ctrPfrCrtBean
.
getStatisticsType
(),
ctrPfrCrtBean
.
getStatisticsTypeId
(),
ctrPfrCrtBean
.
getProjectPfr
(
),
ctrPfrCrtBean
.
getFirstDemandsPfr
(
),
ctrPfrCrtBean
.
getFirstPositionsPfr
(
),
ctrPfrCrtBean
.
getFirstSolutionsPfr
(
),
ctrPfrCrtBean
.
getSecondDemandsPfr
(
),
ctrPfrCrtBean
.
getSecondPositionsPfr
(
),
ctrPfrCrtBean
.
getSecondSolutionsPfr
(
),
StringUtils
.
transString2PairedString
(
ctrPfrCrtBean
.
getProjectPfr
()
),
StringUtils
.
transString2PairedString
(
ctrPfrCrtBean
.
getFirstDemandsPfr
()
),
StringUtils
.
transString2PairedString
(
ctrPfrCrtBean
.
getFirstPositionsPfr
()
),
StringUtils
.
transString2PairedString
(
ctrPfrCrtBean
.
getFirstSolutionsPfr
()
),
StringUtils
.
transString2PairedString
(
ctrPfrCrtBean
.
getSecondDemandsPfr
()
),
StringUtils
.
transString2PairedString
(
ctrPfrCrtBean
.
getSecondPositionsPfr
()
),
StringUtils
.
transString2PairedString
(
ctrPfrCrtBean
.
getSecondSolutionsPfr
()
),
DateUtils
.
getDateStr
(
date
),
DateUtils
.
getTimeStr
(
date
)
)
);
}
JDBCUtils
.
close
(
null
,
statement
,
null
);
}
catch
(
Exception
e
){
e
.
printStackTrace
();
...
...
src/main/java/com/gmei/data/ctr/utils/StringUtils.java
0 → 100644
View file @
6a84d617
package
com
.
gmei
.
data
.
ctr
.
utils
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* @ClassName StringUtils
* @Author apple
* @Date 2020/4/13
* @Version V1.0
**/
public
class
StringUtils
{
public
static
Map
<
String
,
Integer
>
transPairedString2Map
(
String
str
){
Map
<
String
,
Integer
>
map
=
new
HashMap
<
String
,
Integer
>();
String
[]
splits
=
str
.
split
(
","
);
for
(
String
split:
splits
)
{
String
[]
sp
=
split
.
split
(
":"
);
if
(
sp
.
length
==
2
){
map
.
put
(
sp
[
0
],
Integer
.
valueOf
(
sp
[
1
]));
}
}
return
map
;
}
public
static
String
transMap2PairedString
(
Map
<
String
,
Integer
>
map
){
String
str
=
""
;
for
(
Map
.
Entry
entry:
map
.
entrySet
())
{
str
+=
entry
.
getKey
()
+
":"
+
entry
.
getValue
()
+
","
;
}
if
(
str
.
length
()
==
0
){
return
str
;
}
return
str
.
substring
(
0
,
str
.
length
()
-
1
);
}
public
static
Map
<
String
,
Integer
>
transString2Map
(
String
str
){
Map
<
String
,
Integer
>
map
=
new
HashMap
<
String
,
Integer
>();
String
[]
splits
=
str
.
split
(
","
);
for
(
String
split
:
splits
)
{
if
(
org
.
apache
.
commons
.
lang3
.
StringUtils
.
isNotBlank
(
split
)){
map
.
put
(
split
,
1
);
}
}
return
map
;
}
public
static
Map
<
String
,
Integer
>
increaseByKey
(
Map
<
String
,
Integer
>
oldMap
,
String
str
){
Map
<
String
,
Integer
>
stringIntegerMap
=
transString2Map
(
str
);
for
(
Map
.
Entry
<
String
,
Integer
>
entry
:
oldMap
.
entrySet
()){
String
key
=
entry
.
getKey
();
if
(
stringIntegerMap
.
containsKey
(
key
)){
Integer
value
=
oldMap
.
get
(
key
);
Integer
result
=
value
+
1
;
oldMap
.
put
(
key
,
result
);
}
stringIntegerMap
.
remove
(
key
);
}
oldMap
.
putAll
(
stringIntegerMap
);
return
oldMap
;
}
public
static
String
transString2PairedString
(
String
str
){
Map
<
String
,
Integer
>
stringIntegerMap
=
transString2Map
(
str
);
return
transMap2PairedString
(
stringIntegerMap
);
}
public
static
String
increasePfr
(
String
oldStr
,
String
str
)
{
Map
<
String
,
Integer
>
oldMap
=
transPairedString2Map
(
oldStr
);
Map
<
String
,
Integer
>
newMap
=
increaseByKey
(
oldMap
,
str
);
return
transMap2PairedString
(
newMap
);
}
public
static
void
main
(
String
[]
args
)
{
String
str
=
"xx:1,yy:2,zz:3"
;
String
newPfr
=
"xx,yy,zz"
;
String
s
=
increasePfr
(
str
,
newPfr
);
System
.
out
.
println
(
s
);
System
.
out
.
println
(
transString2PairedString
(
newPfr
));
}
}
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