计算昨日收益,读取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程序相关推荐

  1. Scala入门到精通—— 第二节Scala基本类型及操作、程序控制结构

    本节主要内容 Scala基本类型 基本类型操作 Scala程序控制结构 Scala基本类型 Scala中的基本数据类型如下图: (来源:Programming in scala) 从上表中可以看出,S ...

  2. 第二节Scala基本类型及操作、程序控制结构

    本节主要内容 Scala基本类型 基本类型操作 Scala程序控制结构 Scala基本类型 Scala中的基本数据类型如下图:    (来源:Programming in Scala) 从上表中可以看 ...

  3. python学习之第二课时--运行程序和字符编码

    python学习之第二课时--运行程序和字符编码 python的运行方式 Windows的终端运行方式:                [右键点击开始键]--->[运行输入cmd]---> ...

  4. c语言运行时更入下一行,C语言高级语言程序设计(一)_第二章 C程序设计基础(二).ppt...

    C语言高级语言程序设计(一)_第二章 C程序设计基础(二) * 问a,b能否交换?不能.示例 传值调用 如何改变参数的值?在后续章节中介绍 下:传值 * 传值的好处 下:问题3.2 * * * 使用范 ...

  5. 第一个Scala程序——Hello World!

    一.交互式编程 交互式编程不需要创建脚本文件,可以通过以下命令调用: $ scala Welcome to Scala 2.13.3 (Java HotSpot(TM) 64-Bit Server V ...

  6. 编写第二个Spring程序——AOP实现

    第二个Spring程序 AOP范例 1.新建maven工程 2.在pom.xml文件导入相关jar包 <!-- https://mvnrepository.com/artifact/org.sp ...

  7. 【scala】IDEA运行scala程序:Error:scalac: bad option: ‘-make:transitive‘

    1.概述 转载:原文链接:https://blog.csdn.net/qq_38617531/article/details/87935460 2.问题描述 IDEA运行scala程序报错:Error ...

  8. 解决:idea运行scala程序,报错:Error:scalac: bad option: -make:transitive

    问题描述: idea运行scala程序,报错:Error:scalac: bad option: '-make:transitive'\ 解决办法: 1.进到项目的根目录下面. 2.进入.idea文件 ...

  9. Spark 第二讲 Scala简介

    一. Scala 简介 Scala 是 Scalable Language 的简写,是一门多范式的编程语言,由联邦理工学院洛桑(EPFL)的 Martin Odersky 于2001年基于 Funne ...

最新文章

  1. pdf.js 远程预览pdf文件 Error: file origin does not match viewer's
  2. 如何使用 DSL 实现 DDD 的快速落地
  3. ndroid网络(4):HttpClient必经之路----使用线程安全的单例模式HttpClient,及HttpClient和Application的融合...
  4. MVC 中Simditor上传本地图片
  5. PL/SQL Developer使用笔记
  6. Struts 2 之校验器
  7. Atitit 研发团队建设----福利法案--非物质福利与物质福利法案
  8. xvid-core1.1.2编译方法(vc6,vs2005)
  9. wap ios android,iOS/Android/WAP 全兼容专题页面制作方法(一)
  10. linux自学第二天
  11. docker: 使用nginx容器运行html静态网页以及制作镜像
  12. [领卓教育]使用QT实现一个简单的离线词典
  13. 东沃电子:瞬态电压抑制二极管选型指南
  14. 清兵线(准备特长生)
  15. 魔方自动还原程序3D版本和2D 修正版
  16. AD怎么输入坐标_CAD入门基础小知识(二)捕捉栅格绘制直线amp;使用坐标绘图...
  17. NoSQL数据库与分布式缓存对比:同工异曲
  18. 帆软报表(FineReport)版本9打开版本10的报表
  19. 循环世界模型(Recurrent World Models)——真实世界建模的强化学习利器
  20. Docker总结(配合阿里云容器镜像服务)

热门文章

  1. 轨道交通-上海地铁营运图
  2. python进行数据分析------相关分析
  3. 【信号处理】基于Matlab实现拉曼光谱的尖峰去除
  4. 西屋电气启动破产程序 东芝预计将损失达620亿元
  5. 第十二届蓝桥杯 2021年省赛真题 (C/C++ 大学A组) 第一场
  6. 国密SM9算法C++实现之三:椭圆曲线接口、参数初始化
  7. SMMU架构手册之Address Size(2)
  8. word中查看有多少个分隔符
  9. dsp和通用计算机的区别,dsp芯片是什么 dsp芯片和通用微处理器有什么区别
  10. 中国目前最具竞争力的二线城市有哪些?