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
Commit
6a84d617
authored
Apr 13, 2020
by
赵建伟
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update codes
parent
75a1f443
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
192 additions
and
39 deletions
+192
-39
ctr_all.sql
libs/ctr_all.sql
+31
-17
CtrPfrCrtMysqlSink.java
src/main/java/com/gmei/data/ctr/sink/CtrPfrCrtMysqlSink.java
+80
-22
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` (
...
@@ -53,35 +53,49 @@ CREATE TABLE `device_current_estimate_tag_unplat` (
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
;
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
;
-- CTR特征预估最近偏好表
-- 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'
,
`id`
bigint
(
20
)
NOT
NULL
AUTO_INCREMENT
COMMENT
'自增ID'
,
`device_id`
varchar
(
150
)
DEFAULT
NULL
COMMENT
'设备ID'
,
`device_id`
varchar
(
150
)
DEFAULT
NULL
COMMENT
'设备ID'
,
`statistics_type`
varchar
(
150
)
DEFAULT
NULL
COMMENT
'统计类型'
,
`statistics_type`
varchar
(
150
)
DEFAULT
NULL
COMMENT
'统计类型'
,
`statistics_type_id`
varchar
(
150
)
DEFAULT
NULL
COMMENT
'统计类型id'
,
`statistics_type_id`
varchar
(
150
)
DEFAULT
NULL
COMMENT
'统计类型id'
,
`project_pfr`
text
COMMENT
'项目偏好'
,
`project_pfr_recent1`
text
COMMENT
'近一次项目偏好(去重后)'
,
`first_demands_pfr`
text
COMMENT
'一级诉求偏好'
,
`project_pfr_recent3`
text
COMMENT
'近三次项目偏好(去重后)'
,
`first_positions_pfr`
text
COMMENT
'一级部位偏好'
,
`project_pfr_recent10`
text
COMMENT
'近十次项目偏好(去重后)'
,
`first_solutions_pfr`
text
COMMENT
'一级方式偏好'
,
`first_demands_pfr_recent1`
text
COMMENT
'近一次一级诉求偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)'
,
`second_demands_pfr`
text
COMMENT
'二级诉求偏好'
,
`first_demands_pfr_recent3`
text
COMMENT
'近三次一级诉求偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)'
,
`second_positions_pfr`
text
COMMENT
'二级部位偏好'
,
`first_demands_pfr_recent10`
text
COMMENT
'近十次一级诉求偏好(偏好去重,次数累加) eg: (xx:a,yy:b,zz:c)'
,
`second_solutions_pfr`
text
COMMENT
'二级方式偏好'
,
`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
'上一次更改的时间'
,
`last_update_time`
varchar
(
45
)
DEFAULT
NULL
COMMENT
'上一次更改的时间'
,
PRIMARY
KEY
(
`id`
)
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
;
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
;
-- CTR特征预估
最近
偏好表
-- CTR特征预估
当日
偏好表
CREATE
TABLE
`device_current_estimate_view_pfr`
(
CREATE
TABLE
`device_current_estimate_view_pfr
_new
`
(
`id`
bigint
(
20
)
NOT
NULL
AUTO_INCREMENT
COMMENT
'自增ID'
,
`id`
bigint
(
20
)
NOT
NULL
AUTO_INCREMENT
COMMENT
'自增ID'
,
`device_id`
varchar
(
150
)
DEFAULT
NULL
COMMENT
'设备ID'
,
`device_id`
varchar
(
150
)
DEFAULT
NULL
COMMENT
'设备ID'
,
`statistics_type`
varchar
(
150
)
DEFAULT
NULL
COMMENT
'统计类型'
,
`statistics_type`
varchar
(
150
)
DEFAULT
NULL
COMMENT
'统计类型'
,
`statistics_type_id`
varchar
(
150
)
DEFAULT
NULL
COMMENT
'统计类型id'
,
`statistics_type_id`
varchar
(
150
)
DEFAULT
NULL
COMMENT
'统计类型id'
,
`project_pfr`
text
COMMENT
'项目偏好'
,
`project_pfr`
text
COMMENT
'项目偏好
,当天次数累加、偏好去重 eg: (xx:a,yy:b,zz:c)
'
,
`first_demands_pfr`
text
COMMENT
'一级诉求偏好'
,
`first_demands_pfr`
text
COMMENT
'一级诉求偏好
,当天次数累加、偏好去重 eg: (xx:a,yy:b,zz:c)
'
,
`first_positions_pfr`
text
COMMENT
'一级部位偏好'
,
`first_positions_pfr`
text
COMMENT
'一级部位偏好
,当天次数累加、偏好去重 eg: (xx:a,yy:b,zz:c)
'
,
`first_solutions_pfr`
text
COMMENT
'一级方式偏好'
,
`first_solutions_pfr`
text
COMMENT
'一级方式偏好
,当天次数累加、偏好去重 eg: (xx:a,yy:b,zz:c)
'
,
`second_demands_pfr`
text
COMMENT
'二级诉求偏好'
,
`second_demands_pfr`
text
COMMENT
'二级诉求偏好
,当天次数累加、偏好去重 eg: (xx:a,yy:b,zz:c)
'
,
`second_positions_pfr`
text
COMMENT
'二级部位偏好'
,
`second_positions_pfr`
text
COMMENT
'二级部位偏好
,当天次数累加、偏好去重 eg: (xx:a,yy:b,zz:c)
'
,
`second_solutions_pfr`
text
COMMENT
'二级方式偏好'
,
`second_solutions_pfr`
text
COMMENT
'二级方式偏好
,当天次数累加、偏好去重 eg: (xx:a,yy:b,zz:c)
'
,
`partition_date`
varchar
(
45
)
DEFAULT
NULL
COMMENT
'日期'
,
`partition_date`
varchar
(
45
)
DEFAULT
NULL
COMMENT
'日期'
,
`last_update_time`
varchar
(
45
)
DEFAULT
NULL
COMMENT
'上一次更改的时间'
,
`last_update_time`
varchar
(
45
)
DEFAULT
NULL
COMMENT
'上一次更改的时间'
,
PRIMARY
KEY
(
`id`
)
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;
...
@@ -4,13 +4,11 @@ import com.gmei.data.ctr.bean.CtrPfrCrtBean;
import
com.gmei.data.ctr.common.Constants
;
import
com.gmei.data.ctr.common.Constants
;
import
com.gmei.data.ctr.utils.DateUtils
;
import
com.gmei.data.ctr.utils.DateUtils
;
import
com.gmei.data.ctr.utils.JDBCUtils
;
import
com.gmei.data.ctr.utils.JDBCUtils
;
import
com.gmei.data.ctr.utils.StringUtils
;
import
org.apache.flink.configuration.Configuration
;
import
org.apache.flink.configuration.Configuration
;
import
org.apache.flink.streaming.api.functions.sink.RichSinkFunction
;
import
org.apache.flink.streaming.api.functions.sink.RichSinkFunction
;
import
java.sql.Connection
;
import
java.sql.*
;
import
java.sql.DriverManager
;
import
java.sql.SQLException
;
import
java.sql.Statement
;
import
java.util.Date
;
import
java.util.Date
;
/**
/**
...
@@ -73,38 +71,98 @@ public class CtrPfrCrtMysqlSink extends RichSinkFunction<CtrPfrCrtBean> {
...
@@ -73,38 +71,98 @@ public class CtrPfrCrtMysqlSink extends RichSinkFunction<CtrPfrCrtBean> {
Statement
statement
=
null
;
Statement
statement
=
null
;
Date
date
=
new
Date
();
Date
date
=
new
Date
();
if
(
null
!=
ctrPfrCrtBean
){
if
(
null
!=
ctrPfrCrtBean
){
boolean
isExist
=
false
;
String
projectPfr
=
""
;
String
firstDemandsPfr
=
""
;
String
firstPositionsPfr
=
""
;
String
firstSolutionsPfr
=
""
;
String
secondDemandsPfr
=
""
;
String
secondPositionsPfr
=
""
;
String
secondSolutionsPfr
=
""
;
try
{
try
{
statement
=
connection
.
createStatement
();
statement
=
connection
.
createStatement
();
statement
.
executeUpdate
(
ResultSet
resultSet
=
statement
.
executeQuery
(
String
.
format
(
String
.
format
(
"insert into device_current_estimate_view_pfr("
+
"select "
+
"device_id,"
+
"statistics_type,"
+
"statistics_type_id,"
+
"project_pfr,"
+
"project_pfr,"
+
"first_demands_pfr,"
+
"first_demands_pfr,"
+
"first_positions_pfr,"
+
"first_positions_pfr,"
+
"first_solutions_pfr,"
+
"first_solutions_pfr,"
+
"second_demands_pfr,"
+
"second_demands_pfr,"
+
"second_positions_pfr,"
+
"second_positions_pfr,"
+
"second_solutions_pfr,"
+
"second_solutions_pfr"
+
"partition_date,"
+
"from device_current_estimate_view_pfr_new "
+
"last_update_time"
"where device_id = '%s' and statistics_type = '%s' and statistics_type_id = '%s' and partition_date = '%s'"
,
+
") values ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')"
,
ctrPfrCrtBean
.
getDeviceId
(),
ctrPfrCrtBean
.
getDeviceId
(),
ctrPfrCrtBean
.
getStatisticsType
(),
ctrPfrCrtBean
.
getStatisticsType
(),
ctrPfrCrtBean
.
getStatisticsTypeId
(),
ctrPfrCrtBean
.
getStatisticsTypeId
(),
ctrPfrCrtBean
.
getProjectPfr
(),
ctrPfrCrtBean
.
getPartitionDate
()
ctrPfrCrtBean
.
getFirstDemandsPfr
(),
ctrPfrCrtBean
.
getFirstPositionsPfr
(),
ctrPfrCrtBean
.
getFirstSolutionsPfr
(),
ctrPfrCrtBean
.
getSecondDemandsPfr
(),
ctrPfrCrtBean
.
getSecondPositionsPfr
(),
ctrPfrCrtBean
.
getSecondSolutionsPfr
(),
DateUtils
.
getDateStr
(
date
),
DateUtils
.
getTimeStr
(
date
)
)
)
);
);
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
(
"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,"
+
"project_pfr,"
+
"first_demands_pfr,"
+
"first_positions_pfr,"
+
"first_solutions_pfr,"
+
"second_demands_pfr,"
+
"second_positions_pfr,"
+
"second_solutions_pfr,"
+
"partition_date,"
+
"last_update_time"
+
") values ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')"
,
ctrPfrCrtBean
.
getDeviceId
(),
ctrPfrCrtBean
.
getStatisticsType
(),
ctrPfrCrtBean
.
getStatisticsTypeId
(),
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
);
JDBCUtils
.
close
(
null
,
statement
,
null
);
}
catch
(
Exception
e
){
}
catch
(
Exception
e
){
e
.
printStackTrace
();
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