object DataProcess extends App {
val spark = SparkSession
.builder()
.appName("UserBehiviorToHHDataPartition")
.getOrCreate()
val dataCollection = spark.sparkContext.textFile("./testdata/ods")
import spark.implicits._
val mergePartitonStroragePath = "./testdata/dwd2"
val datadf = dataCollection.map( r => r.split("\t")).map(r => (r(0).toInt,(r(1).toLong/1000).toInt,r(2).toInt,r(4),r(5)))
.toDF("user_id","event_time","behivior_id","behivior_pop","record_date").filter($"user_id" === 4707776)
datadf.write.format("parquet").mode("overwrite").partitionBy("record_date").save(mergePartitonStroragePath)
spark.stop()
}
class JsonInfoGetString extends UDF2[String, String, String] {
def call(jsonInfo: String, keyName: String): String = {
var value: String = ""
try {
val typeOfHashMap: Type = new TypeToken[java.util.Map[String, String]]() {}.getType
val map: java.util.Map[String, String] = FunnelUtil.gson.fromJson(jsonInfo, typeOfHashMap)
if (map.containsKey(keyName))
value = map.get(keyName).toString
} catch {
case ex: Throwable =>
}
value
}
}
class JsonInfoGetLong extends UDF2[String, String, Long] {
def call(jsonInfo: String, keyName: String): Long = {
var value: Long = 0l
try {
val typeOfHashMap: Type = new TypeToken[java.util.Map[String, Object]]() {}.getType
val map: java.util.Map[String, Object] = FunnelUtil.gson.fromJson(jsonInfo, typeOfHashMap)
if (map.containsKey(keyName))
value = map.get(keyName).toString.toFloat.toLong
} catch {
case ex: Throwable =>
}
value
}
}
class JsonInfoGetDouble extends UDF2[String, String, Float] {
def call(jsonInfo: String, keyName: String): Float = {
var value: Float = 0.0f
try {
val typeOfHashMap: Type = new TypeToken[java.util.Map[String, Object]]() {}.getType
val map: java.util.Map[String, Object] = FunnelUtil.gson.fromJson(jsonInfo, typeOfHashMap)
if (map.containsKey(keyName))
value = map.get(keyName).toString.toFloat
} catch {
case ex: Throwable =>
}
value
}
}
def benchTest(name:String,sql:String): Unit ={
val b2 = System.currentTimeMillis()
spark.sql(sql).show(10,false)
val e2 = System.currentTimeMillis()
println(s"name $name , cost: ${e2-b2}")
}
分享到:
相关推荐
codegenerate-3.6.1.jar的源码,下载了最新jd-gui工具反编译的。jeecg框架是最新的3.7,最近做二次开发需要修改自动生成代码。做jeecg二次开发的可以相互探讨交流
codegenerate-3.6.1.jar的源码,下载了最新jd-gui工具反编译的。jeecg框架是最新的3.7,最近做二次开发需要修改自动生成代码。做jeecg二次开发的可以相互探讨交流
计量芯片HLW8110、HLW8112 参考代码 ,基于STM32103RC6内核,HLW8110.C 是UART参考代码,HLW8112.C是SPI参考代码
CodeJam-2021-Qual-解决方案比赛(已结束)链接: : 作者:上一次比赛时,我只能解决一个过于偏重的问题:(。 但是,这次我完成了所有5个问题:)。 3个完全交流电和2个部分交流电。 在比赛中获得全球第5510名之后...
欧母龙PLC例程_本资料仅供学习参考
欢迎使用代码生成器Code-Builder 更新记录 1.0.5.RELEASE 添加模板前缀参数filePrefix 修改项目根地址排除target 生成完成后输出本次执行信息 Maven Center 版本 欢迎关注公众号 关注微信公众号,回复加群,获取交流...
多种智能优化算法设计开发应用,可供学习交流,不断更新资源
多种智能优化算法设计开发应用,可供学习交流,不断更新资源
多种智能优化算法设计开发应用,可供学习交流,不断更新资源
多种智能优化算法设计开发应用,可供学习交流,不断更新资源
多种智能优化算法设计开发应用,可供学习交流,不断更新资源
多种智能优化算法设计开发应用,可供学习交流,不断更新资源
多种智能优化算法设计开发应用,可供学习交流,不断更新资源
交流在上与我们聊天,在像我们一样要求基本的Git和Github。 (如果您对Git或Github有任何疑问,请随时与任何导师联系)入门要在本地计算机上启动并运行该项目,您需要做的就是克隆或下载该项目,在android studio中...
Java8-Source-Code 简介 Java8源码学习 ├── com/ ├── java/(常用代码都在此文件夹下) │ ├── lang/ │ │ ├── ClassLoader │ │ ├── Enum │ │ ├── Integer │ │ ├── Long │ │ ├── ...
VS Code插件开发文档欢迎来到为巨硬填坑的中文文档 :grinning_squinting_face:质疑,纠错和参与提问:欢迎大家在issue区对插件开发进行问题,虽然这里不是官方答疑平台,不过你可以在这里和国内的插件开发者进行交流...
GB50065-2011交流电气装置的接地设计规范.pdf Code for design of ac electrical installations earthing 注:高清标准,支持查找,注册电气工程师必备参考文档之第30文档
深入理解java虚拟机 java高级特性与最佳实践 源码 学习交流
sift image mosic code,经测试,可以使用的,大家交流一下,谢谢了
Code-farmers-turn-over 码农翻身 作者 “码农翻身” 公共号 : 由工作15年的前IBM架构师创建,分享编程和职场的经验教训。 大话编程 编程语言 只用一个线程来处理所有请求,事件驱动编程 程序人生 ” 老司机经验 :...