第二个scala程序
计算昨日收益,读取hdfs文件,使用临时表sqlcontext进行计算,结果保存于mysql中。
之前考虑过将结果存储于Hbase中,由于各种原因及问题,在加上数据量真的很小很小,就改成mysql了。
package com.zhongxinimport java.text.SimpleDateFormat import java.util.{Calendar, Properties}import com.zhongxin.utils.Constants import org.apache.spark.sql.types._ import org.apache.spark.sql.{Row, SQLContext, SaveMode} import org.apache.spark.{SparkConf, SparkContext} /*** Created by DingYS on 2017/12/15.* 昨日收益*/ object YesterdayInterest {def main(args:Array[String]){if(null == args || args.length != 1){System.err.print("请输入参数,格式为<输入数据文件夹路径>")System.exit(-1)}val conf = new SparkConf().setAppName("YesterdayInterest").setMaster("local")val sc = new SparkContext(conf)val sqlcontext = new SQLContext(sc)val filePath = args(0)val userRDD = sc.textFile(filePath,5).map(line => line.split(",")).map(line => Row(line(0).trim,line(1).toInt,line(2).toDouble,line(3).toInt,line(4).toDouble))val structType = StructType(Array(StructField("userId",StringType,true),StructField("totalOnInvestedShare",IntegerType,true),StructField("bidYield",DoubleType,true),StructField("addShare",IntegerType,true),StructField("addYield",DoubleType,true)))val userInterestDF = sqlcontext.createDataFrame(userRDD,structType)userInterestDF.registerTempTable("t_yesterdayInterest")val yesterday = getYesterday()val resultDF = sqlcontext.sql("select '" + yesterday + "' as day,userId,round(sum((totalOnInvestedShare * bidYield/100 + addShare * addYield/100)/365),2) as yesterdayInterest from t_yesterdayInterest group by userId")val prop = new Properties()prop.put("user", Constants.MYSQL_USER)prop.put("password", Constants.MYSQL_PASSWORD)resultDF.write.mode(SaveMode.Append).jdbc(Constants.MYSQL_URL, "zx_user_yesterday_interest", prop)sc.stop()}// 昨日日期def getYesterday():String= {var dateFormat: SimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd")var cal: Calendar = Calendar.getInstance()cal.add(Calendar.DATE, -1)var yesterday = dateFormat.format(cal.getTime())yesterday} }
sqlcontext
转载于:https://www.cnblogs.com/Smilence1024/p/8057084.html
第二个scala程序相关推荐
- Scala入门到精通—— 第二节Scala基本类型及操作、程序控制结构
本节主要内容 Scala基本类型 基本类型操作 Scala程序控制结构 Scala基本类型 Scala中的基本数据类型如下图: (来源:Programming in scala) 从上表中可以看出,S ...
- 第二节Scala基本类型及操作、程序控制结构
本节主要内容 Scala基本类型 基本类型操作 Scala程序控制结构 Scala基本类型 Scala中的基本数据类型如下图: (来源:Programming in Scala) 从上表中可以看 ...
- python学习之第二课时--运行程序和字符编码
python学习之第二课时--运行程序和字符编码 python的运行方式 Windows的终端运行方式: [右键点击开始键]--->[运行输入cmd]---> ...
- c语言运行时更入下一行,C语言高级语言程序设计(一)_第二章 C程序设计基础(二).ppt...
C语言高级语言程序设计(一)_第二章 C程序设计基础(二) * 问a,b能否交换?不能.示例 传值调用 如何改变参数的值?在后续章节中介绍 下:传值 * 传值的好处 下:问题3.2 * * * 使用范 ...
- 第一个Scala程序——Hello World!
一.交互式编程 交互式编程不需要创建脚本文件,可以通过以下命令调用: $ scala Welcome to Scala 2.13.3 (Java HotSpot(TM) 64-Bit Server V ...
- 编写第二个Spring程序——AOP实现
第二个Spring程序 AOP范例 1.新建maven工程 2.在pom.xml文件导入相关jar包 <!-- https://mvnrepository.com/artifact/org.sp ...
- 【scala】IDEA运行scala程序:Error:scalac: bad option: ‘-make:transitive‘
1.概述 转载:原文链接:https://blog.csdn.net/qq_38617531/article/details/87935460 2.问题描述 IDEA运行scala程序报错:Error ...
- 解决:idea运行scala程序,报错:Error:scalac: bad option: -make:transitive
问题描述: idea运行scala程序,报错:Error:scalac: bad option: '-make:transitive'\ 解决办法: 1.进到项目的根目录下面. 2.进入.idea文件 ...
- Spark 第二讲 Scala简介
一. Scala 简介 Scala 是 Scalable Language 的简写,是一门多范式的编程语言,由联邦理工学院洛桑(EPFL)的 Martin Odersky 于2001年基于 Funne ...
最新文章
- pdf.js 远程预览pdf文件 Error: file origin does not match viewer's
- 如何使用 DSL 实现 DDD 的快速落地
- ndroid网络(4):HttpClient必经之路----使用线程安全的单例模式HttpClient,及HttpClient和Application的融合...
- MVC 中Simditor上传本地图片
- PL/SQL Developer使用笔记
- Struts 2 之校验器
- Atitit 研发团队建设----福利法案--非物质福利与物质福利法案
- xvid-core1.1.2编译方法(vc6,vs2005)
- wap ios android,iOS/Android/WAP 全兼容专题页面制作方法(一)
- linux自学第二天
- docker: 使用nginx容器运行html静态网页以及制作镜像
- [领卓教育]使用QT实现一个简单的离线词典
- 东沃电子:瞬态电压抑制二极管选型指南
- 清兵线(准备特长生)
- 魔方自动还原程序3D版本和2D 修正版
- AD怎么输入坐标_CAD入门基础小知识(二)捕捉栅格绘制直线amp;使用坐标绘图...
- NoSQL数据库与分布式缓存对比:同工异曲
- 帆软报表(FineReport)版本9打开版本10的报表
- 循环世界模型(Recurrent World Models)——真实世界建模的强化学习利器
- Docker总结(配合阿里云容器镜像服务)