scala> val fileRDD=sc.textFile(“hdfs://192.168.5.51:9000/kb09file/op.log”)
scala> val jsonStrRDD=fileRDD.map(x=>x.split(’|’)).map(x=>(x(0),x(1)))
scala> val jsonRDD=jsonStrRDD.map(x=>{var jsonStr=x._2;jsonStr
= jsonStr.substring(0,jsonStr.length-1);jsonStr+",“id”:""+x._1+""}"}) //加双引号才是json字符串 很重要
scala> val jsonDF=jsonRDD.toDF
scala> jsonDF.printSchema
root
|-- value: string (nullable = true)
scala> import spark.implicits._
scala> import org.apache.spark.sql.functions._
scala> import org.apache.spark.sql._
scala> import org.apache.spark.sql.types._
scala> jsonDF.select(get_json_object(
"
v
a
l
u
e
"
,
"
"value","
"value",".cm").alias(“cm”)).printSchema
root
|-- cm: string (nullable = true)
scala> jsonDF.select(get_json_object(
"
v
a
l
u
e
"
,
"
"value","
"value",".cm").alias(“cm”)).show
±-------------------+
| cm|
±-------------------+
|{“ln”:"-55.0",“sv…|
|{“ln”:”-114.9","s…|
±-------------------+
scala> jsonDF.select(get_json_object(
"
v
a
l
u
e
"
,
"
"value","
"value",".cm").alias(“cm”),get_json_object(
"
v
a
l
u
e
"
,
"
"value","
"value",".ap").alias(“ap”),
get_json_object(
"
v
a
l
u
e
"
,
"
"value","
"value",".et").alias(“et”),get_json_object(
"
v
a
l
u
e
"
,
"
"value","
"value",".id").alias(“id”)).show()
±-------------------±–±-------------------±------------+
| cm| ap| et| id|
±-------------------±–±-------------------±------------+
|{“ln”:"-55.0",“sv…|app|[{“ett”:“15930500…|1593136280858|
|{“ln”:”-114.9”,"s…|app|[{“ett”:"15930632…|1593136280858|
±-------------------±–±-------------------±------------+
//将json字符串结构化
//表头 cm ap et id
//列 a1 b1 c1 d1
scala> val jsonDF2 = jsonDF.select(get_json_object(
"
v
a
l
u
e
"
,
"
"value","
"value",".cm").alias(“cm”),get_json_object(
"
v
a
l
u
e
"
,
"
"value","
"value",".ap").alias(“ap”)
,get_json_object(
"
v
a
l
u
e
"
,
"
"value","
"value",".et").alias(“et”),get_json_object(
"
v
a
l
u
e
"
,
"
"value","
"value",".id").alias(“id”))
scala> jsonDF2.printSchema
root
|-- cm: string (nullable = true)
|-- ap: string (nullable = true)
|-- et: string (nullable = true)
|-- id: string (nullable = true)
scala> jsonDF2.select(
"
i
d
"
,
"id",
"id",“ap”,
"
c
m
"
,
"cm",
"cm",“et”).show
±------------±–±-------------------±-------------------+
| id| ap| cm| et|
±------------±–±-------------------±-------------------+
|1593136280858|app|{“ln”:"-55.0",“sv…|[{“ett”:“15930500…|
|1593136280858|app|{“ln”:”-114.9”,"s…|[{“ett”:"15930632…|
±------------±–±-------------------±-------------------+
scala> val jsonDF3 = jsonDF2.select(
"
i
d
"
,
"id",
"id",“ap”,get_json_object(
"
c
m
"
,
"
"cm","
"cm",".ln") alias(“ln”),
get_json_object(
"
c
m
"
,
"
"cm","
"cm",".sv") alias(“sv”),get_json_object(
"
c
m
"
,
"
"cm","
"cm",".os") alias(“os”),
get_json_object(
"
c
m
"
,
"
"cm","
"cm",".g") alias(“g”),get_json_object(
"
c
m
"
,
"
"cm","
"cm",".mid") alias(“mid”),
get_json_object(
"
c
m
"
,
"
"cm","
"cm",".nw") alias(“nw”),get_json_object(
"
c
m
"
,
"
"cm","
"cm",".l") alias(“l”),
get_json_object(
"
c
m
"
,
"
"cm","
"cm",".vc") alias(“vc”),get_json_object(
"
c
m
"
,
"
"cm","
"cm",".hw") alias(“hw”),
get_json_object(
"
c
m
"
,
"
"cm","
"cm",".ar") alias(“ar”),get_json_object(
"
c
m
"
,
"
"cm","
"cm",".uid") alias(“uid”),
get_json_object(
"
c
m
"
,
"
"cm","
"cm",".t") alias(“t”),get_json_object(
"
c
m
"
,
"
"cm","
"cm",".la") alias(“la”),
get_json_object(
"
c
m
"
,
"
"cm","
"cm",".md") alias(“md”),get_json_object(
"
c
m
"
,
"
"cm","
"cm",".vn") alias(“vn”),
get_json_object(
"
c
m
"
,
"
"cm","
"cm",".ba") alias(“ba”),get_json_object(
"
c
m
"
,
"
"cm","
"cm",".sr") alias(“sr”),$“et”)
scala> jsonDF3.printSchema
root
|-- id: string (nullable = true)
|-- ap: string (nullable = true)
|-- ln: string (nullable = true)
|-- sv: string (nullable = true)
|-- os: string (nullable = true)
|-- g: string (nullable = true)
|-- mid: string (nullable = true)
|-- nw: string (nullable = true)
|-- l: string (nullable = true)
|-- vc: string (nullable = true)
|-- hw: string (nullable = true)
|-- ar: string (nullable = true)
|-- uid: string (nullable = true)
|-- t: string (nullable = true)
|-- la: string (nullable = true)
|-- md: string (nullable = true)
|-- vn: string (nullable = true)
|-- ba: string (nullable = true)
|-- sr: string (nullable = true)
|-- et: string (nullable = true)
scala> jsonDF3.show
±------------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±-------------------+
| id| ap| ln| sv| os| g|mid| nw| l| vc| hw| ar|uid| t| la| md| vn| ba| sr| et|
±------------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±-------------------+
|1593136280858|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|[{“ett”:"15930500…|
|1593136280858|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|[{“ett”:"15930632…|
±------------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±-------------------+
//from_json把字符串
[
{“ett”:“a1”,“en”:“a2”,“kv”:“a3”},
{“ett”:“b1”,“en”:“b2”,“kv”:“b3”},
{“ett”:“c1”,“en”:“c2”,“kv”:“c3”}
] 结构化
ett en kv
a1 a2 a3
b1 b2 b3
c1 c2 c3
val jsonDF4 = jsonDF3.select( " i d " , "id", "id",“ap”, " l n " , "ln", "ln",“sv”, " o s " , "os", "os",“g”, " m i d " , "mid", "mid",“nw”, " l " , "l", "l",“vc”, " h w " , "hw", "hw",“ar”, " u i d " , "uid", "uid",“t”, " l a " , "la", "la",“md”, " v n " , "vn", "vn",“ba”, " s r " , f r o m j s o n ( "sr", from_json( "sr",fromjson(“et”,ArrayType(StructType(StructField(“ett”,StringType)::StructField(“en”,StringType)::StructField(“kv”,StringType)::Nil))).alias(“event”))
jsonDF4大脑想到的结构是这样:
id ap mid nw *** event
1593136280858 app 12345 dsdwe **** [[ett en ev],[b1 b2 b3 ],[c1 c2 c3]]
---------------------思考结束---------------------------
开干。。。。。。。。
第二步
scala> val jsonDF5 = jsonDF4.select( " i d " , "id", "id",“ap”, " l n " , "ln", "ln",“sv”, " o s " , "os", "os",“g”, " m i d " , "mid", "mid",“nw”, " l " , "l", "l",“vc”, " h w " , "hw", "hw",“ar”, " u i d " , "uid", "uid",“t”, " l a " , "la", "la",“md”, " v n " , "vn", "vn",“ba”, " s r " , e x p l o d e ( "sr", explode( "sr",explode(“event”).alias(“event”))
scala> val jsonDF6 = jsonDF5.select( " i d " , "id", "id",“ap”, " l n " , "ln", "ln",“sv”, " o s " , "os", "os",“g”, " m i d " , "mid", "mid",“nw”, " l " , "l", "l",“vc”, " h w " , "hw", "hw",“ar”, " u i d " , "uid", "uid",“t”, " l a " , "la", "la",“md”, " v n " , "vn", "vn",“ba”, " s r " , ( "sr", ( "sr",(“event.kv”).alias(“kv”),( " e v e n t . e t t " ) . a l i a s ( " e t t " ) , ( "event.ett").alias("ett"),( "event.ett").alias("ett"),(“event.en”).alias(“en”))
scala> jsonDF6.select( " i d " , "id", "id",“ap”, " l n " , "ln", "ln",“sv”, " o s " , "os", "os",“g”, " m i d " , "mid", "mid",“nw”, " l " , "l", "l",“vc”, " h w " , "hw", "hw",“ar”, " u i d " , "uid", "uid",“t”, " l a " , "la", "la",“md”, " v n " , "vn", "vn",“ba”, " s r " , "sr", "sr",“ett”, " e n " , "en" , "en",“kv”).filter($“en”===“loading”).show(false)
scala> val loadingDF = jsonDF6.select( " i d " , "id", "id",“ap”, " l n " , "ln", "ln",“sv”, " o s " , "os", "os",“g”, " m i d " , "mid", "mid",“nw”, " l " , "l", "l",“vc”, " h w " , "hw", "hw",“ar”, " u i d " , "uid", "uid",“t”, " l a " , "la", "la",“md”, " v n " , "vn", "vn",“ba”, " s r " , "sr" , "sr",“ett”, " e n " , "en", "en",“kv”).filter($“en”===“loading”)
scala> loadingDF.select(
"
i
d
"
,
"id",
"id",“ap”,
"
l
n
"
,
"ln",
"ln",“sv”,
"
o
s
"
,
"os",
"os",“g”,
"
m
i
d
"
,
"mid",
"mid",“nw”,
"
l
"
,
"l",
"l",“vc”,
"
h
w
"
,
"hw",
"hw",“ar”,
"
u
i
d
"
,
"uid",
"uid",“t”,
"
l
a
"
,
"la",
"la",“md”,
"
v
n
"
,
"vn",
"vn",“ba”,
"
s
r
"
,
"sr",
"sr",“ett”,
"
e
n
"
,
g
e
t
j
s
o
n
o
b
j
e
c
t
(
"en",get_json_object(
"en",getjsonobject(“kv”,"
.
e
x
t
e
n
d
2
"
)
a
l
i
a
s
(
"
e
x
t
e
n
d
2
"
)
,
g
e
t
j
s
o
n
o
b
j
e
c
t
(
.extend2") alias("extend2"),get_json_object(
.extend2")alias("extend2"),getjsonobject(“kv”,"
.
l
o
a
d
i
n
g
t
i
m
e
"
)
a
l
i
a
s
(
"
l
o
a
d
i
n
g
t
i
m
e
"
)
,
g
e
t
j
s
o
n
o
b
j
e
c
t
(
.loading_time") alias("loading_time"),get_json_object(
.loadingtime")alias("loadingtime"),getjsonobject(“kv”,"
.
a
c
t
i
o
n
"
)
a
l
i
a
s
(
"
a
c
t
i
o
n
"
)
,
g
e
t
j
s
o
n
o
b
j
e
c
t
(
.action") alias("action"),get_json_object(
.action")alias("action"),getjsonobject(“kv”,"
.
e
x
t
e
n
d
1
"
)
a
l
i
a
s
(
"
e
x
t
e
n
d
1
"
)
,
g
e
t
j
s
o
n
o
b
j
e
c
t
(
.extend1") alias("extend1"),get_json_object(
.extend1")alias("extend1"),getjsonobject(“kv”,"
.
t
y
p
e
"
)
a
l
i
a
s
(
"
t
y
p
e
"
)
,
g
e
t
j
s
o
n
o
b
j
e
c
t
(
.type") alias("type"),get_json_object(
.type")alias("type"),getjsonobject(“kv”,"
.
t
y
p
e
1
"
)
a
l
i
a
s
(
"
t
y
p
e
1
"
)
,
g
e
t
j
s
o
n
o
b
j
e
c
t
(
.type1") alias("type1"),get_json_object(
.type1")alias("type1"),getjsonobject(“kv”,"$.loading_way") alias(“loading_way”)).printSchema
root
|-- id: string (nullable = true)
|-- ap: string (nullable = true)
|-- ln: string (nullable = true)
|-- sv: string (nullable = true)
|-- os: string (nullable = true)
|-- g: string (nullable = true)
|-- mid: string (nullable = true)
|-- nw: string (nullable = true)
|-- l: string (nullable = true)
|-- vc: string (nullable = true)
|-- hw: string (nullable = true)
|-- ar: string (nullable = true)
|-- uid: string (nullable = true)
|-- t: string (nullable = true)
|-- la: string (nullable = true)
|-- md: string (nullable = true)
|-- vn: string (nullable = true)
|-- ba: string (nullable = true)
|-- sr: string (nullable = true)
|-- ett: string (nullable = true)
|-- en: string (nullable = true)
|-- extend2: string (nullable = true)
|-- loading_time: string (nullable = true)
|-- action: string (nullable = true)
|-- extend1: string (nullable = true)
|-- type: string (nullable = true)
|-- type1: string (nullable = true)
|-- loading_way: string (nullable = true)
scala> val loadingDF1 = loadingDF.select(
"
i
d
"
,
"id",
"id",“ap”,
"
l
n
"
,
"ln",
"ln",“sv”,
"
o
s
"
,
"os",
"os",“g”,
"
m
i
d
"
,
"mid",
"mid",“nw”,
"
l
"
,
"l",
"l",“vc”,
"
h
w
"
,
"hw",
"hw",“ar”,
"
u
i
d
"
,
"uid",
"uid",“t”,
"
l
a
"
,
"la",
"la",“md”,
"
v
n
"
,
"vn",
"vn",“ba”,
"
s
r
"
,
"sr",
"sr",“ett”,
"
e
n
"
,
g
e
t
j
s
o
n
o
b
j
e
c
t
(
"en",get_json_object(
"en",getjsonobject(“kv”,"
.
e
x
t
e
n
d
2
"
)
a
l
i
a
s
(
"
e
x
t
e
n
d
2
"
)
,
g
e
t
j
s
o
n
o
b
j
e
c
t
(
.extend2") alias("extend2"),get_json_object(
.extend2")alias("extend2"),getjsonobject(“kv”,"
.
l
o
a
d
i
n
g
t
i
m
e
"
)
a
l
i
a
s
(
"
l
o
a
d
i
n
g
t
i
m
e
"
)
,
g
e
t
j
s
o
n
o
b
j
e
c
t
(
.loading_time") alias("loading_time"),get_json_object(
.loadingtime")alias("loadingtime"),getjsonobject(“kv”,"
.
a
c
t
i
o
n
"
)
a
l
i
a
s
(
"
a
c
t
i
o
n
"
)
,
g
e
t
j
s
o
n
o
b
j
e
c
t
(
.action") alias("action"),get_json_object(
.action")alias("action"),getjsonobject(“kv”,"
.
e
x
t
e
n
d
1
"
)
a
l
i
a
s
(
"
e
x
t
e
n
d
1
"
)
,
g
e
t
j
s
o
n
o
b
j
e
c
t
(
.extend1") alias("extend1"),get_json_object(
.extend1")alias("extend1"),getjsonobject(“kv”,"
.
t
y
p
e
"
)
a
l
i
a
s
(
"
t
y
p
e
"
)
,
g
e
t
j
s
o
n
o
b
j
e
c
t
(
.type") alias("type"),get_json_object(
.type")alias("type"),getjsonobject(“kv”,"
.
t
y
p
e
1
"
)
a
l
i
a
s
(
"
t
y
p
e
1
"
)
,
g
e
t
j
s
o
n
o
b
j
e
c
t
(
.type1") alias("type1"),get_json_object(
.type1")alias("type1"),getjsonobject(“kv”,"$.loading_way") alias(“loading_way”))
scala> loadingDF1.show
±------------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±------------±------±------±-----------±-----±------±—±----±----------+
| id| ap| ln| sv| os| g|mid| nw| l| vc| hw| ar|uid| t| la| md| vn| ba| sr| ett| en|extend2|loading_time|action|extend1|type|type1|loading_way|
±------------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±------------±------±------±-----------±-----±------±—±----±----------+
|1593136280858|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593050051366|loading| | 14| 3| | 2| 201| 1|
|1593136280858|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593063223807|loading| | 0| 3| | 1| 102| 1|
±------------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±------------±------±------±-----------±-----±------±—±----±----------+
scala> val adDF = jsonDF6.select(
"
i
d
"
,
"id",
"id",“ap”,
"
l
n
"
,
"ln",
"ln",“sv”,
"
o
s
"
,
"os",
"os",“g”,
"
m
i
d
"
,
"mid",
"mid",“nw”,
"
l
"
,
"l",
"l",“vc”,
"
h
w
"
,
"hw",
"hw",“ar”,
"
u
i
d
"
,
"uid",
"uid",“t”,
"
l
a
"
,
"la",
"la",“md”,
"
v
n
"
,
"vn",
"vn",“ba”,
"
s
r
"
,
"sr",
"sr",“ett”,
"
e
n
"
,
"en",
"en",“kv”).filter(
"
e
n
"
=
=
=
"
a
d
"
)
s
c
a
l
a
>
v
a
l
a
d
D
F
1
=
a
d
D
F
.
s
e
l
e
c
t
(
"en"==="ad") scala> val adDF1 = adDF.select(
"en"==="ad")scala>valadDF1=adDF.select(“id”,
"
a
p
"
,
"ap",
"ap",“ln”,
"
s
v
"
,
"sv",
"sv",“os”,
"
g
"
,
"g",
"g",“mid”,
"
n
w
"
,
"nw",
"nw",“l”,
"
v
c
"
,
"vc",
"vc",“hw”,
"
a
r
"
,
"ar",
"ar",“uid”,
"
t
"
,
"t",
"t",“la”,
"
m
d
"
,
"md",
"md",“vn”,
"
b
a
"
,
"ba",
"ba",“sr”,
"
e
t
t
"
,
"ett",
"ett",“en”,get_json_object(
"
k
v
"
,
"
"kv","
"kv",".activityId") alias(“activityId”),get_json_object(
"
k
v
"
,
"
"kv","
"kv",".displayMills") alias(“displayMills”),get_json_object(
"
k
v
"
,
"
"kv","
"kv",".entry") alias(“entry”),get_json_object(
"
k
v
"
,
"
"kv","
"kv",".action") alias(“action”),get_json_object(
"
k
v
"
,
"
"kv","
"kv",".contentType") alias(“contentType”))
scala> adDF1.show
±------------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±------------±–±---------±-----------±----±-----±----------+
| id| ap| ln| sv| os| g|mid| nw| l| vc| hw| ar|uid| t| la| md| vn| ba| sr| ett| en|activityId|displayMills|entry|action|contentType|
±------------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±------------±–±---------±-----------±----±-----±----------+
|1593136280858|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593108791764| ad| 1| 78522| 1| 1| 0|
|1593136280858|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593095105466| ad| 1| 1966| 3| 2| 0|
±------------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±------------±–±---------±-----------±----±-----±----------+
scala> val notificationDF = jsonDF6.select(
"
i
d
"
,
"id",
"id",“ap”,
"
l
n
"
,
"ln",
"ln",“sv”,
"
o
s
"
,
"os",
"os",“g”,
"
m
i
d
"
,
"mid",
"mid",“nw”,
"
l
"
,
"l",
"l",“vc”,
"
h
w
"
,
"hw",
"hw",“ar”,
"
u
i
d
"
,
"uid",
"uid",“t”,
"
l
a
"
,
"la",
"la",“md”,
"
v
n
"
,
"vn",
"vn",“ba”,
"
s
r
"
,
"sr",
"sr",“ett”,
"
e
n
"
,
"en",
"en",“kv”).filter(
"
e
n
"
=
=
=
"
n
o
t
i
f
i
c
a
t
i
o
n
"
)
s
c
a
l
a
>
v
a
l
n
o
t
i
f
i
c
a
t
i
o
n
D
F
1
=
n
o
t
i
f
i
c
a
t
i
o
n
D
F
.
s
e
l
e
c
t
(
"en"==="notification") scala> val notificationDF1 = notificationDF.select(
"en"==="notification")scala>valnotificationDF1=notificationDF.select(“id”,
"
a
p
"
,
"ap",
"ap",“ln”,
"
s
v
"
,
"sv",
"sv",“os”,
"
g
"
,
"g",
"g",“mid”,
"
n
w
"
,
"nw",
"nw",“l”,
"
v
c
"
,
"vc",
"vc",“hw”,
"
a
r
"
,
"ar",
"ar",“uid”,
"
t
"
,
"t",
"t",“la”,
"
m
d
"
,
"md",
"md",“vn”,
"
b
a
"
,
"ba",
"ba",“sr”,
"
e
t
t
"
,
"ett",
"ett",“en”,get_json_object(
"
k
v
"
,
"
"kv","
"kv",".ap_time") alias(“ap_time”),get_json_object(
"
k
v
"
,
"
"kv","
"kv",".action") alias(“action”),get_json_object(
"
k
v
"
,
"
"kv","
"kv",".type") alias(“type”),get_json_object(
"
k
v
"
,
"
"kv","
"kv",".content") alias(“content”))
scala> notificationDF1.show
±------------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±------------±-----------±------------±-----±—±------+
| id| ap| ln| sv| os| g|mid| nw| l| vc| hw| ar|uid| t| la| md| vn| ba| sr| ett| en| ap_time|action|type|content|
±------------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±------------±-----------±------------±-----±—±------+
|1593136280858|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593111271266|notification|1593097087883| 1| 1| |
|1593136280858|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593051718208|notification|1593095336265| 2| 3| |
±------------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±------------±-----------±------------±-----±—±------+
scala> val active_backgroundDF = jsonDF6.select(
"
i
d
"
,
"id",
"id",“ap”,
"
l
n
"
,
"ln",
"ln",“sv”,
"
o
s
"
,
"os",
"os",“g”,
"
m
i
d
"
,
"mid",
"mid",“nw”,
"
l
"
,
"l",
"l",“vc”,
"
h
w
"
,
"hw",
"hw",“ar”,
"
u
i
d
"
,
"uid",
"uid",“t”,
"
l
a
"
,
"la",
"la",“md”,
"
v
n
"
,
"vn",
"vn",“ba”,
"
s
r
"
,
"sr",
"sr",“ett”,
"
e
n
"
,
"en",
"en",“kv”).filter(
"
e
n
"
=
=
=
"
a
c
t
i
v
e
b
a
c
k
g
r
o
u
n
d
"
)
s
c
a
l
a
>
v
a
l
a
c
t
i
v
e
b
a
c
k
g
r
o
u
n
d
D
F
1
=
a
c
t
i
v
e
b
a
c
k
g
r
o
u
n
d
D
F
.
s
e
l
e
c
t
(
"en"==="active_background") scala> val active_backgroundDF1 = active_backgroundDF.select(
"en"==="activebackground")scala>valactivebackgroundDF1=activebackgroundDF.select(“id”,
"
a
p
"
,
"ap",
"ap",“ln”,
"
s
v
"
,
"sv",
"sv",“os”,
"
g
"
,
"g",
"g",“mid”,
"
n
w
"
,
"nw",
"nw",“l”,
"
v
c
"
,
"vc",
"vc",“hw”,
"
a
r
"
,
"ar",
"ar",“uid”,
"
t
"
,
"t",
"t",“la”,
"
m
d
"
,
"md",
"md",“vn”,
"
b
a
"
,
"ba",
"ba",“sr”,
"
e
t
t
"
,
"ett",
"ett",“en”,get_json_object(
"
k
v
"
,
"
"kv","
"kv",".active_source") alias(“active_source”))
scala> active_backgroundDF1.show
±------------±–±----±-----±----±-----------------±–±--±–±--±------±–±--±------------±–±---------±----±------±–±------------±----------------±------------+
| id| ap| ln| sv| os| g|mid| nw| l| vc| hw| ar|uid| t| la| md| vn| ba| sr| ett| en|active_source|
±------------±–±----±-----±----±-----------------±–±--±–±--±------±–±--±------------±–±---------±----±------±–±------------±----------------±------------+
|1593136280858|app|-55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4|640*960| MX|489|1593123253541|5.2|sumsung-18|1.3.4|Sumsung| I|1593066033562|active_background| 3|
±------------±–±----±-----±----±-----------------±–±--±–±--±------±–±--±------------±–±---------±----±------±–±------------±----------------±------------+
scala> val commentDF = jsonDF6.select(
"
i
d
"
,
"id",
"id",“ap”,
"
l
n
"
,
"ln",
"ln",“sv”,
"
o
s
"
,
"os",
"os",“g”,
"
m
i
d
"
,
"mid",
"mid",“nw”,
"
l
"
,
"l",
"l",“vc”,
"
h
w
"
,
"hw",
"hw",“ar”,
"
u
i
d
"
,
"uid",
"uid",“t”,
"
l
a
"
,
"la",
"la",“md”,
"
v
n
"
,
"vn",
"vn",“ba”,
"
s
r
"
,
"sr",
"sr",“ett”,
"
e
n
"
,
"en",
"en",“kv”).filter(
"
e
n
"
=
=
=
"
c
o
m
m
e
n
t
"
)
s
c
a
l
a
>
v
a
l
c
o
m
m
e
n
t
D
F
1
=
c
o
m
m
e
n
t
D
F
.
s
e
l
e
c
t
(
"en"==="comment") scala> val commentDF1 = commentDF.select(
"en"==="comment")scala>valcommentDF1=commentDF.select(“id”,
"
a
p
"
,
"ap",
"ap",“ln”,
"
s
v
"
,
"sv",
"sv",“os”,
"
g
"
,
"g",
"g",“mid”,
"
n
w
"
,
"nw",
"nw",“l”,
"
v
c
"
,
"vc",
"vc",“hw”,
"
a
r
"
,
"ar",
"ar",“uid”,
"
t
"
,
"t",
"t",“la”,
"
m
d
"
,
"md",
"md",“vn”,
"
b
a
"
,
"ba",
"ba",“sr”,
"
e
t
t
"
,
"ett",
"ett",“en”,get_json_object(
"
k
v
"
,
"
"kv","
"kv",".p_comment_id") alias(“p_comment_id”),get_json_object(
"
k
v
"
,
"
"kv","
"kv",".addtime") alias(“addtime”),get_json_object(
"
k
v
"
,
"
"kv","
"kv",".praise_count") alias(“praise_count”),get_json_object(
"
k
v
"
,
"
"kv","
"kv",".other_id") alias(“other_id”),get_json_object(
"
k
v
"
,
"
"kv","
"kv",".comment_id") alias(“comment_id”),get_json_object(
"
k
v
"
,
"
"kv","
"kv",".reply_count") alias(“reply_count”),get_json_object(
"
k
v
"
,
"
"kv","
"kv",".userid") alias(“userid”),get_json_object(
"
k
v
"
,
"
"kv","
"kv",".content") alias(“content”))
scala> commentDF1.show
±------------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±------------±------±-----------±------------±-----------±-------±---------±----------±-----±-------------------------+
| id| ap| ln| sv| os| g|mid| nw| l| vc| hw| ar|uid| t| la| md| vn| ba| sr| ett| en|p_comment_id| addtime|praise_count|other_id|comment_id|reply_count|userid| content|
±------------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±------------±------±-----------±------------±-----------±-------±---------±----------±-----±-------------------------+
|1593136280858|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593135644347|comment| 1|1593097573725| 973| 5| 9| 40| 7| 辑赤蹲慰鸽抿肘捎|
|1593136280858|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593100021275|comment| 4|1593098946009| 220| 4| 9| 151| 4|抄应螟皮釉倔掉汉蛋蕾街羡晶|
±------------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±------------±------±-----------±------------±-----------±-------±---------±----------±-----±-------------------------+
scala> val praiseDF = jsonDF6.select(
"
i
d
"
,
"id",
"id",“ap”,
"
l
n
"
,
"ln",
"ln",“sv”,
"
o
s
"
,
"os",
"os",“g”,
"
m
i
d
"
,
"mid",
"mid",“nw”,
"
l
"
,
"l",
"l",“vc”,
"
h
w
"
,
"hw",
"hw",“ar”,
"
u
i
d
"
,
"uid",
"uid",“t”,
"
l
a
"
,
"la",
"la",“md”,
"
v
n
"
,
"vn",
"vn",“ba”,
"
s
r
"
,
"sr",
"sr",“ett”,
"
e
n
"
,
"en",
"en",“kv”).filter(
"
e
n
"
=
=
=
"
p
r
a
i
s
e
"
)
s
c
a
l
a
>
v
a
l
p
r
a
i
s
e
D
F
1
=
p
r
a
i
s
e
D
F
.
s
e
l
e
c
t
(
"en"==="praise") scala> val praiseDF1 = praiseDF.select(
"en"==="praise")scala>valpraiseDF1=praiseDF.select(“id”,
"
a
p
"
,
"ap",
"ap",“ln”,
"
s
v
"
,
"sv",
"sv",“os”,
"
g
"
,
"g",
"g",“mid”,
"
n
w
"
,
"nw",
"nw",“l”,
"
v
c
"
,
"vc",
"vc",“hw”,
"
a
r
"
,
"ar",
"ar",“uid”,
"
t
"
,
"t",
"t",“la”,
"
m
d
"
,
"md",
"md",“vn”,
"
b
a
"
,
"ba" ,
"ba",“sr”,
"
e
t
t
"
,
"ett",
"ett",“en”,get_json_object(
"
k
v
"
,
"
"kv","
"kv",".target_id") alias(“target_id”),get_json_object(
"
k
v
"
,
"
"kv","
"kv",".id") alias(“id1”),
get_json_object(
"
k
v
"
,
"
"kv","
"kv",".type") alias(“type”),get_json_object(
"
k
v
"
,
"
"kv","
"kv",".add_time") alias(“add_time”),get_json_object(
"
k
v
"
,
"
"kv","
"kv",".userid") alias(“userid”))
scala> praiseDF1.show
±------------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±-------±----±-----±–±------------±-----±--------±–±—±------------±-----+
| id| ap| ln| sv| os| g|mid| nw| l| vc| hw| ar|uid| t| la| md| vn| ba| sr| ett| en|target_id|id1|type| add_time|userid|
±------------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±-------±----±-----±–±------------±-----±--------±–±—±------------±-----+
|1593136280858|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|640*1136| MX|490|1593121224789|-44.4|Huawei-8|1.0.1|Huawei| O|1593105344120|praise| 9| 7| 1|1593098545976| 8|
±------------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±-------±----±-----±–±------------±-----±--------±–±—±------------±-----+
scala> loadingDF1.join(adDF1,Seq(“id”,“id”),“inner”).join(notificationDF1,Seq(“id”,“id”),“inner”).join(active_backgroundDF1,Seq(“id”,“id”),“inner”).join(commentDF1,Seq(“id”,“id”),“inner”).show
±------------±------------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±------------±------±------±-----------±-----±------±—±----±----------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±------------±–±---------±-----------±----±-----±----------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±------------±-----------±------------±-----±—±------±–±----±-----±----±-----------------±–±--±–±--±------±–±--±------------±–±---------±----±------±–±------------±----------------±------------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±------------±------±-----------±------------±-----------±-------±---------±----------±-----±-------------------------+
| id| id| ap| ln| sv| os| g|mid| nw| l| vc| hw| ar|uid| t| la| md| vn| ba| sr| ett| en|extend2|loading_time|action|extend1|type|type1|loading_way| ap| ln| sv| os| g|mid| nw| l| vc| hw| ar|uid| t| la| md| vn| ba| sr| ett| en|activityId|displayMills|entry|action|contentType| ap| ln| sv| os| g|mid| nw| l| vc| hw| ar|uid| t| la| md| vn| ba| sr| ett| en| ap_time|action|type|content| ap| ln| sv| os| g|mid| nw| l| vc| hw| ar|uid| t| la| md| vn| ba| sr| ett| en|active_source| ap| ln| sv| os| g|mid| nw| l| vc| hw| ar|uid| t| la| md| vn| ba| sr| ett| en|p_comment_id| addtime|praise_count|other_id|comment_id|reply_count|userid| content|
±------------±------------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±------------±------±------±-----------±-----±------±—±----±----------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±------------±–±---------±-----------±----±-----±----------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±------------±-----------±------------±-----±—±------±–±----±-----±----±-----------------±–±--±–±--±------±–±--±------------±–±---------±----±------±–±------------±----------------±------------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±------------±------±-----------±------------±-----------±-------±---------±----------±-----±-------------------------+
|1593136280858|1593136280858|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593050051366|loading| | 14| 3| | 2| 201| 1|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593108791764| ad| 1| 78522| 1| 1| 0|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593111271266|notification|1593097087883| 1| 1| |app|-55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4|640960| MX|489|1593123253541|5.2|sumsung-18|1.3.4|Sumsung| I|1593066033562|active_background| 3|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593135644347|comment| 1|1593097573725| 973| 5| 9| 40| 7| 辑赤蹲慰鸽抿肘捎|
|1593136280858|1593136280858|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593050051366|loading| | 14| 3| | 2| 201| 1|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593108791764| ad| 1| 78522| 1| 1| 0|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593111271266|notification|1593097087883| 1| 1| |app|-55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4|640960| MX|489|1593123253541|5.2|sumsung-18|1.3.4|Sumsung| I|1593066033562|active_background| 3|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593100021275|comment| 4|1593098946009| 220| 4| 9| 151| 4|抄应螟皮釉倔掉汉蛋蕾街羡晶|
|1593136280858|1593136280858|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593050051366|loading| | 14| 3| | 2| 201| 1|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593108791764| ad| 1| 78522| 1| 1| 0|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593051718208|notification|1593095336265| 2| 3| |app|-55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4|640960| MX|489|1593123253541|5.2|sumsung-18|1.3.4|Sumsung| I|1593066033562|active_background| 3|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593135644347|comment| 1|1593097573725| 973| 5| 9| 40| 7| 辑赤蹲慰鸽抿肘捎|
|1593136280858|1593136280858|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593050051366|loading| | 14| 3| | 2| 201| 1|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593108791764| ad| 1| 78522| 1| 1| 0|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593051718208|notification|1593095336265| 2| 3| |app|-55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4|640960| MX|489|1593123253541|5.2|sumsung-18|1.3.4|Sumsung| I|1593066033562|active_background| 3|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593100021275|comment| 4|1593098946009| 220| 4| 9| 151| 4|抄应螟皮釉倔掉汉蛋蕾街羡晶|
|1593136280858|1593136280858|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593050051366|loading| | 14| 3| | 2| 201| 1|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593095105466| ad| 1| 1966| 3| 2| 0|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593111271266|notification|1593097087883| 1| 1| |app|-55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4|640960| MX|489|1593123253541|5.2|sumsung-18|1.3.4|Sumsung| I|1593066033562|active_background| 3|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593135644347|comment| 1|1593097573725| 973| 5| 9| 40| 7| 辑赤蹲慰鸽抿肘捎|
|1593136280858|1593136280858|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593050051366|loading| | 14| 3| | 2| 201| 1|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593095105466| ad| 1| 1966| 3| 2| 0|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593111271266|notification|1593097087883| 1| 1| |app|-55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4|640960| MX|489|1593123253541|5.2|sumsung-18|1.3.4|Sumsung| I|1593066033562|active_background| 3|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593100021275|comment| 4|1593098946009| 220| 4| 9| 151| 4|抄应螟皮釉倔掉汉蛋蕾街羡晶|
|1593136280858|1593136280858|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593050051366|loading| | 14| 3| | 2| 201| 1|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593095105466| ad| 1| 1966| 3| 2| 0|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593051718208|notification|1593095336265| 2| 3| |app|-55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4|640960| MX|489|1593123253541|5.2|sumsung-18|1.3.4|Sumsung| I|1593066033562|active_background| 3|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593135644347|comment| 1|1593097573725| 973| 5| 9| 40| 7| 辑赤蹲慰鸽抿肘捎|
|1593136280858|1593136280858|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593050051366|loading| | 14| 3| | 2| 201| 1|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593095105466| ad| 1| 1966| 3| 2| 0|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593051718208|notification|1593095336265| 2| 3| |app|-55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4|640960| MX|489|1593123253541|5.2|sumsung-18|1.3.4|Sumsung| I|1593066033562|active_background| 3|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593100021275|comment| 4|1593098946009| 220| 4| 9| 151| 4|抄应螟皮釉倔掉汉蛋蕾街羡晶|
|1593136280858|1593136280858|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593063223807|loading| | 0| 3| | 1| 102| 1|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593108791764| ad| 1| 78522| 1| 1| 0|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593111271266|notification|1593097087883| 1| 1| |app|-55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4|640960| MX|489|1593123253541|5.2|sumsung-18|1.3.4|Sumsung| I|1593066033562|active_background| 3|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593135644347|comment| 1|1593097573725| 973| 5| 9| 40| 7| 辑赤蹲慰鸽抿肘捎|
|1593136280858|1593136280858|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593063223807|loading| | 0| 3| | 1| 102| 1|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593108791764| ad| 1| 78522| 1| 1| 0|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593111271266|notification|1593097087883| 1| 1| |app|-55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4|640960| MX|489|1593123253541|5.2|sumsung-18|1.3.4|Sumsung| I|1593066033562|active_background| 3|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593100021275|comment| 4|1593098946009| 220| 4| 9| 151| 4|抄应螟皮釉倔掉汉蛋蕾街羡晶|
|1593136280858|1593136280858|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593063223807|loading| | 0| 3| | 1| 102| 1|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593108791764| ad| 1| 78522| 1| 1| 0|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593051718208|notification|1593095336265| 2| 3| |app|-55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4|640960| MX|489|1593123253541|5.2|sumsung-18|1.3.4|Sumsung| I|1593066033562|active_background| 3|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593135644347|comment| 1|1593097573725| 973| 5| 9| 40| 7| 辑赤蹲慰鸽抿肘捎|
|1593136280858|1593136280858|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593063223807|loading| | 0| 3| | 1| 102| 1|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593108791764| ad| 1| 78522| 1| 1| 0|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593051718208|notification|1593095336265| 2| 3| |app|-55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4|640960| MX|489|1593123253541|5.2|sumsung-18|1.3.4|Sumsung| I|1593066033562|active_background| 3|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593100021275|comment| 4|1593098946009| 220| 4| 9| 151| 4|抄应螟皮釉倔掉汉蛋蕾街羡晶|
|1593136280858|1593136280858|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593063223807|loading| | 0| 3| | 1| 102| 1|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593095105466| ad| 1| 1966| 3| 2| 0|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593111271266|notification|1593097087883| 1| 1| |app|-55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4|640960| MX|489|1593123253541|5.2|sumsung-18|1.3.4|Sumsung| I|1593066033562|active_background| 3|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593135644347|comment| 1|1593097573725| 973| 5| 9| 40| 7| 辑赤蹲慰鸽抿肘捎|
|1593136280858|1593136280858|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593063223807|loading| | 0| 3| | 1| 102| 1|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593095105466| ad| 1| 1966| 3| 2| 0|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593111271266|notification|1593097087883| 1| 1| |app|-55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4|640960| MX|489|1593123253541|5.2|sumsung-18|1.3.4|Sumsung| I|1593066033562|active_background| 3|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593100021275|comment| 4|1593098946009| 220| 4| 9| 151| 4|抄应螟皮釉倔掉汉蛋蕾街羡晶|
|1593136280858|1593136280858|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593063223807|loading| | 0| 3| | 1| 102| 1|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593095105466| ad| 1| 1966| 3| 2| 0|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593051718208|notification|1593095336265| 2| 3| |app|-55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4|640960| MX|489|1593123253541|5.2|sumsung-18|1.3.4|Sumsung| I|1593066033562|active_background| 3|app| -55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4| 640960| MX|489|1593123253541| 5.2|sumsung-18|1.3.4|Sumsung| I|1593135644347|comment| 1|1593097573725| 973| 5| 9| 40| 7| 辑赤蹲慰鸽抿肘捎|
|1593136280858|1593136280858|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593063223807|loading| | 0| 3| | 1| 102| 1|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593095105466| ad| 1| 1966| 3| 2| 0|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593051718208|notification|1593095336265| 2| 3| |app|-55.0|V2.9.6|8.0.4|C6816QZ0@gmail.com|489| 3G| es| 4|640960| MX|489|1593123253541|5.2|sumsung-18|1.3.4|Sumsung| I|1593066033562|active_background| 3|app|-114.9|V2.7.8|8.0.4|NW0S962J@gmail.com|490| 3G| pt| 8|6401136| MX|490|1593121224789|-44.4| Huawei-8|1.0.1| Huawei| O|1593100021275|comment| 4|1593098946009| 220| 4| 9| 151| 4|抄应螟皮釉倔掉汉蛋蕾街羡晶|
±------------±------------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±------------±------±------±-----------±-----±------±—±----±----------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±------------±–±---------±-----------±----±-----±----------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±------------±-----------±------------±-----±—±------±–±----±-----±----±-----------------±–±--±–±--±------±–±--±------------±–±---------±----±------±–±------------±----------------±------------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±------------±------±-----------±------------±-----------±-------±---------±----------±-----±-------------------------+