2020年寒假学习进度第九天

今天主要解决了实验五未解决的问题,前天在做实验五spark连接mysql时出现找不到jar包的问题,看了网上的讲解,调整了一下路径,有人说jar包要放在同名的一个文件夹里,实际上jar包应该直接放在spark安装目录的jars目录下就可,这样就可以连接上。

3. 编程实现利用 DataFrame 读写 MySQL 的数据

(1) 在 MySQL 数据库中新建数据库 sparktest,再建表 employee,包含下列两行数据;

表 1 employee 表原有数据

(2) 配置Spark通过JDBC连接数据库MySQL,编程实现利用DataFrame插入下列数据到MySQL,

最后打印出 age 的最大值和 age 的总和。

表 2 employee 表新增数据

带jar包启动shell编程:

bin/spark-shell--jars/usr/local/spark/jars/mysql-connector-java-5.1.40-bin.jar

代码:

import java.util.Properties

import org.apache.spark.sql.types._

import org.apache.spark.sql.Row

import org.apache.spark.sql.SparkSession

import org.apache.spark.sql.DataFrameReader

object TestMySQL {

def main(args: Array[String]) {

val spark = SparkSession.builder().appName("RddToDFrame").master("local").getOrCreate()

import spark.implicits._

val employeeRDD = spark.sparkContext.parallelize(Array("3 Mary F 26","4 Tom M 23")).map(_.split(" "))

val schema = StructType(List(StructField("id", IntegerType,true),StructField("name", StringType, true),StructField("gender", StringType,true),StructField("age", IntegerType, true)))

val rowRDD = employeeRDD.map(p => Row(p(0).toInt,p(1).trim,p(2).trim,p(3).toInt)) val employeeDF = spark.createDataFrame(rowRDD, schema)

val prop = new Properties() prop.put("user", "root") prop.put("password", "0") prop.put("driver","com.mysql.jdbc.Driver") employeeDF.write.mode("append").jdbc("jdbc:mysql://localhost:3306/sparktest","sparktest.employee", prop)

Val jdbcDF = spark.read.format("jdbc").option("url","jdbc:mysql://localhost:3306/sparktest").option("driver","com.mysql.jdbc.Driver").option("dbtable","employee").option("user","root").option("password", "0").load()

jdbcDF.agg("age" -> "max", "age" -> "sum").show()

print("ok") } }

原文地址:https://www.cnblogs.com/ljm-zsy/p/12287045.html

时间: 2024-11-05 20:26:22

2020年寒假学习进度第九天的相关文章

2020年寒假学习进度(一)

由于下学期就要进行毕业设计答辩,打算这个寒假在家先继续巩固知识和学习新的技术要点,然后着力进行毕业设计的开发. 今天主要复习了一些关于javaweb的内容,总结如下: (1)WEB,也就是网页的意思,它用于表示Internet主机上供外界访问的资源.常用动态web资源开发技术:JSP/Servlet.ASP.PHP等 本人主要学习java运用于web开发的重要技术在Java中,动态web资源开发技术统称为Javaweb. (2)servlet/jsp: 这是SUN公司(SUN现在已经被Oracl

2020年寒假学习进度第七天

今天主要学习了spark实验四的内容,实验四主要为RDD编程,本实验的重点为两个编程题 1.编写独立应用程序实现数据去重对于两个输入文件 A 和 B,编写 Spark 独立应用程序,对两个文件进行合并,并剔除其中重复的内容,得到一个新文件 C.下面是输入文件和输出文件的一个样例,供参考.输入文件 A 的样例如下: 20170101 x 20170102 y 20170103 x 20170104 y 20170105 z 20170106 z 输入文件 B 的样例如下: 20170101 y 2

2020年寒假学习进度第十天

今天主要学习了实验 7 Spark 机器学习库 MLlib 编程实践, 主要代码: import org.apache.spark.ml.feature.PCA import org.apache.spark.sql.Row import org.apache.spark.ml.linalg.{Vector,Vectors} import org.apache.spark.ml.evaluation.MulticlassClassificationEvaluator import org.apa

2020年寒假学习进度第二天

今天主要研究了spark实验二的第一部分的Scala编写,看完代码后发现需要在REPL模式下运行,经过查证发现需要安装scala脚本,所以尝试在虚拟机中安装scala,成功后使用给的代码尝试运行,但是出错,提示没有找到类的定义,经过查证,发现是代码中缺少类得定义.改正后可以正常运行. import io.StdIn._ object Test { def main(args: Array[String]){ var Sn:Float = 0 var n:Float=1 println("plea

2020年寒假学习进度第十五天

原文地址:https://www.cnblogs.com/ljm-zsy/p/12312935.html

寒假学习进度02

日期:2020.01.15 博客期:124 星期三 嗯,把这几天学习进度汇总一下: 1.CSV文件.XML文件.JSON文件的处理整合 这一部分详细的让我明天把博客整理出来,你们就能看到了,不过这一部分代码,借鉴了好多其他博主的,我在此声明一下:数据的文件读写部分(除CSV文件外,其余两个)不是本博主原创,剩下的这三者之间的转换和前面构造好的BeanGroup类型的相互转换是自己写的.嗯,具体看下一篇博客吧! 2.数据爬取详细信息 嗯,爬取的话,现在是只能爬取一页上的所有信息,没能做到页面跳转继

2020寒假学习进度报告2

今日完成内容:学习了scala中的语法,主要知识点包括:变量的定义,数值类型,运算符,流程控制,for循环,while循环, do ... while循环,(不建议使用while和do...while,因为函数引入了外部变量),函数尤其是递归,之前学习其他语言时强调尽量少用递归操作,但是在scala中对于递归做了底层优化,所以scala中会用到大量的递归操作. 明日学习任务:学习scala中函数的使用,面向对象编程和函数式编程 原文地址:https://www.cnblogs.com/mawan

2020寒假学习进度报告6

1. 计算级数 请用脚本的方式编程计算并输出下列级数的前 n 项之和 Sn,直到 Sn 刚好大于或等于 q 为止,其中 q 为大于 0 的整数,其值通过键盘输入. 例如,若 q 的值为 50.0,则输出应为:Sn=50.416695.请将源文件保存为 exercise2-1.scala,在 REPL模式下测试运行,测试样例:q=1时,Sn=2:q=30时,Sn=30.891459: q=50 时,Sn=50.416695. 1 var n: Float = 1 2 var Sn: Float =

寒假学习进度三——安卓的一些基本组件

今天主要学习了安卓一些简单的组件,前两天都是按照案例(demo)敲的,对其中用到的组件不是特别的了解. TextView(文本框组件):主要用来显示文字的一些信息.通过修改TextView的属性可以改变文字的颜色,大小,位置.这个组件较比较简单,容易上手.这里就不过多叙述了. Button(按钮):是程序用于和用户进行交互的一个重要控件.Android Studio会对Button中的所有英文字母自动进行大写转换,你可以使用将textAllCaps属性改为false来禁用这一默认特性. Edit