读json文件

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|640
1136| 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|640
1136| 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|640
1136| 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|640
1136| 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|640
1136| 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| 640
960| 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| 640
960| 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| 640
960| 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| 640
960| 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|640
1136| 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|640
1136| 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|640
1136| 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|640
1136| 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|抄应螟皮釉倔掉汉蛋蕾街羡晶|
±------------±------------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±------------±------±------±-----------±-----±------±—±----±----------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±------------±–±---------±-----------±----±-----±----------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±------------±-----------±------------±-----±—±------±–±----±-----±----±-----------------±–±--±–±--±------±–±--±------------±–±---------±----±------±–±------------±----------------±------------±–±-----±-----±----±-----------------±–±--±–±--±-------±–±--±------------±----±---------±----±------±–±------------±------±-----------±------------±-----------±-------±---------±----------±-----±-------------------------+

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值