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}")
}
分享到:
相关推荐
在下载的`code-mirror-master`压缩包中,包含了code-mirror的源码、示例、文档以及各种语言模式和主题文件。开发者可以研究这些源码来深入了解其工作原理,或者直接使用示例文件作为模板快速开始项目。 - `lib`目录...
STM32-CODETEST-103RCT6-Rev34-AC(交流测量)项目主要涉及了STM32微控制器以及两款特定的计量芯片——HLW8110和HLW8112,提供了相关的UART和SPI通信参考代码。这个项目的目标是实现与这些计量芯片的有效交互,以...
### Visual Studio Code 1.70.1 (code-1.70.1-1660111846.el7.aarch64.rpm) 适用于 Linux ARM64 系统 #### 一、简介 Visual Studio Code (VS Code) 是一款由微软开发的免费源代码编辑器,它支持多种编程语言,并且...
总之,Spectacle Code Slide是技术交流和教育领域的一个宝贵资源,它结合了React的灵活性和代码展示的专业性,让技术演示变得更加引人入胜和高效。通过掌握和利用这个开源项目,开发者可以提升其演讲技巧,使代码...
Martin所著的《Clean Code》一书中的原则,将其适应于JavaScript语言环境。这不仅仅是一份样式指南,更是一种关于如何编写可读性强、可重用性高且易于重构的JavaScript软件的方法论。 #### 二、变量命名 在编写...
### VSCode 1.70.1 (code-1.70.1-1660113182.el7.x86_64.rpm) 相关知识点 #### 一、VSCode简介 Visual Studio Code(简称VSCode)是一款由微软开发并免费提供的轻量级源代码编辑器,支持多种编程语言,并且具备...
Code-Hex-battery是一个开源项目,专注于为电池命令提供一个增强的功能,即显示电池已使用的时间。这个项目可能对开发者、系统管理员或者任何对计算机硬件监控感兴趣的用户都非常有用。下面,我们将深入探讨这个项目...
在本文中,我们将深入探讨基于Laravel框架的代码教育库模式库——"Laravel开发-code-category"。这个项目旨在提供一个平台,以便开发者能够学习、分享和管理代码分类,促进编程知识的交流与进步。 首先,我们要理解...
### Visual Studio Code 1.69.1 (code-stable-x64-1657615997.tar.gz) 相关知识点 #### 一、Visual Studio Code 简介 Visual Studio Code(简称 VSCode)是一款由微软开发且免费开源的源代码编辑器,它支持多种...
6. **社区互动辅助**:对于CSDN中的评论和讨论区,插件可能会有增强评论阅读、评论排序等功能,使用户更容易参与讨论,增进技术交流。 为了使用CodeAssistant-crx,用户需要将压缩包中的"CodeAssistant.crx"文件...
5. **代码审查**:强调了代码审查的价值,通过同行评审可以发现潜在的错误和改进空间,提高代码质量的同时促进团队成员之间的交流和学习。 #### 五、实际应用场景 - **企业级应用开发**:本书的理念和技术可以应用...
本资料“Modbus RTU Sample Code CJ1-SCB.rar”提供了一个关于欧母龙CJ1系列PLC使用Modbus RTU通讯的示例代码,对于理解和应用这一协议具有极高的价值。 首先,我们需要了解Modbus是什么。Modbus是一种通用的串行...
【标题】"chatting-code-made-by-java.rar_made" 提供了一个关于使用Java编程实现的聊天窗口项目。这个项目旨在创建一个小型但实用的聊天应用,支持一对一或多人的交流模式。 【描述】"用JAVA编的小型很使用的聊天...
在IT领域,代码是我们交流思想、解决问题的核心工具。"Sample-Code.zip_it"这个压缩包文件,虽然其标题和描述似乎带有一些幽默成分,但其实它很可能包含了一系列的示例代码,是学习和研究编程技术的重要资源。标签...
开发者可以通过社区获取最新的版本和解决问题的方法,与其他开发者交流经验,共同推动UE4在Android平台的发展。 总结,CodeWorks for Android-1R4-windows是UE4在Android平台上开发的重要工具,它提供了完整的C++...
CodeJam-2021-Qual-解决方案比赛(已结束)链接: : 作者:上一次比赛时,我只能解决一个过于偏重的问题:(。 但是,这次我完成了所有5个问题:)。 3个完全交流电和2个部分交流电。 在比赛中获得全球第5510名之后...
同时,Nextcode社区为用户提供了一个交流平台,解答疑问和分享经验。 在使用Nextcode SDK 1.10.0时,开发者需要注意安装依赖的Python环境,通常需要Python 3.x版本,以及相关的生物信息学库,如NumPy、Pandas和...
标题中的"2018-SOCO-SopPSO-SourceCode-Matlab.rar"表明这是一个关于2018年社会计算(SOCO)中基于SopPSO(改进的粒子群优化)算法的源代码集合,使用Matlab语言编写。SopPSO是一种在优化领域广泛应用的算法,它是在...
"Code-For-Fun"项目则是针对LeetCode上的挑战进行的一种创新实践,它集合了近期各种竞争性编码竞赛的解决方案,为程序员提供了一个学习、交流和提升的宝贵资源。 在这个开源项目中,你可以找到一系列精心编写的代码...