创建case class
package jn.ws.bean
case class LogBean(
account :String
,appId :String
,appVersion :String
,carrier :String
,deviceId :String
,deviceType :String
,eventId :String
,ip :String
,latitude :Double
,longitude :Double
,netType :String
,osName :String
,osVersion :String
,properties :Map[String,String]
,releaseChannel :String
,resolution :String
,sessionId :String
,timeStamp :BigInt
,dt :String
,var newSessionId :String
)
定义模式匹配
package jn.ws.util
import jn.ws.bean.LogBean
import org.apache.spark.sql.Row
object EtlUtils {
def row2Logbean(row: Row): LogBean = {
row match {
case Row(
account: String
, appId: String
, appVersion: String
, carrier: String
, deviceId: String
, deviceType: String
, eventId: String
, ip: String
, latitude: Double
, longitude: Double
, netType: String
, osName: String
, osVersion: String
, properties: Map[String, String]
, releaseChannel: String
, resolution: String
, sessionId: String
, timeStamp: BigInt
, dt: String
, newSessionId: String
) =>
LogBean(
account
, appId
, appVersion
, carrier
, deviceId
, deviceType
, eventId
, ip
, latitude
, longitude
, netType
, osName
, osVersion
, properties
, releaseChannel
, resolution
, sessionId
, timeStamp
, dt
, newSessionId
)
case _ => null
}
}
}