首页 > 其他分享 >学习记录15

学习记录15

时间:2024-01-26 18:55:06浏览次数:28  
标签:jdbc 15 val 记录 import 学习 mysql org spark

  本次学习学习了将dataframe里吗有结构的数据加载到mysql以及进行读

这里采用独立应用程序的方式读取MySQL数据库内容。创建一个代码文件SparkReadMySQL.scala,其内容如下:

import org.apache.log4j.{Level, Logger}
import org.apache.spark.sql.SparkSession
object SparkReadMySQL {
  def main(args: Array[String]): Unit ={
    Logger.getLogger("org").setLevel(Level.ERROR)
    val spark = SparkSession.builder().appName("SparkReadMySQL").getOrCreate()
    val df = spark.read
      .format("jdbc")
      .option("url", "jdbc:mysql://localhost:3306/spark")
      .option("driver", "com.mysql.jdbc.Driver")
      .option("dbtable", "student")
      .option("user", "root")
      .option("password", "123456")
      .load()
df.show()
spark.stop()
  }
}

对代码进行编译打包,然后执行如下命令运行程序:

$ /usr/local/spark/bin/spark-submit \
> --jars  \
> /usr/local/spark/jars/mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar \
> --class "SparkReadMySQL" \
> /home/hadoop/sparkapp/target/scala-2.12/simple-project_2.12-1.0.jar
写入MySQL

这里采用独立应用程序的方式把数据写入MySQL数据库。创建一个代码文件SparkWriteMySQL.scala,其内容如下:

import java.util.Properties
import org.apache.spark.sql.types._
import org.apache.spark.sql.Row
import org.apache.log4j.{Level, Logger}
import org.apache.spark.sql.SparkSession

object SparkWriteMySQL {
  def main(args: Array[String]): Unit ={
    Logger.getLogger("org").setLevel(Level.ERROR)
    val spark = SparkSession.builder().appName("SparkWriteMySQL").getOrCreate()
    //下面我们设置两条数据表示两个学生信息
    val studentRDD = spark.sparkContext.parallelize(Array("3 Rongcheng M 26","4 Guanhua M 27")).map(_.split(" "))
//下面要设置模式信息
    val schema = StructType(List(StructField("id", IntegerType, true),StructField("name", StringType, true),StructField("gender", StringType, true),StructField("age", IntegerType, true)))
 
    //下面创建Row对象,每个Row对象都是rowRDD中的一行
    val rowRDD = studentRDD.map(p => Row(p(0).toInt, p(1).trim, p(2).trim, p(3).toInt))
 
    //建立起Row对象和模式之间的对应关系,也就是把数据和模式对应起来
    val studentDF = spark.createDataFrame(rowRDD, schema)
 
    //下面创建一个prop变量用来保存JDBC连接参数
    val prop = new Properties()
    prop.put("user", "root") //表示用户名是root
    prop.put("password", "123456") //表示密码是123456
    prop.put("driver","com.mysql.jdbc.Driver") //表示驱动程序是com.mysql.jdbc.Driver

    //下面就可以连接数据库,采用append模式,表示追加记录到数据库spark的student表中
    studentDF.write.mode("append").jdbc("jdbc:mysql://localhost:3306/spark", "spark.student", prop)
    spark.stop()
  }
}

对代码进行编译打包,然后执行如下命令运行程序:

$ /usr/local/spark/bin/spark-submit \
> --jars  \
> /usr/local/spark/jars/mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar \
> --class "SparkWriteMySQL" \
> /home/hadoop/sparkapp/target/scala-2.12/simple-project_2.12-1.0.jar

标签:jdbc,15,val,记录,import,学习,mysql,org,spark
From: https://www.cnblogs.com/JIANGzihao0222/p/17990486

相关文章

  • openGauss学习笔记-208 openGauss 数据库运维-常见故障定位案例-TPCC高并发长稳运行因
    openGauss学习笔记-208openGauss数据库运维-常见故障定位案例-TPCC高并发长稳运行因脏页刷盘效率导致性能下降208.1TPCC高并发长稳运行因脏页刷盘效率导致性能下降208.1.1问题现象TPCC高并发长稳运行因脏页刷盘效率导致性能下降,具体表现为:初始性能较高,随着运行时间增加,数据......
  • 自动化测试平台搭建背景及记录
    在目前产品的迭代过程中,公司现有的自动化测试体系存在很多问题,大多数情况是人工进行用例回归测试,低效且易出错,导致测试流程在效率和品质方面均未达到理想状态。同时,业务上线周期的日益缩短也导致产品质量的不稳定性也愈发突出,出现版本质量不统一的问题。流程下也伴随着以下痛点:......
  • 记录--h5端调用手机摄像头实现扫一扫功能
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助一、前言最近有遇到一个需求,在h5浏览器中实现扫码功能,其本质便是打开手机摄像头定时拍照,特此做一个记录。主要技术栈采用的是vue2,使用的开发工具是hbuilderX。经过测试发现部分浏览器并不支持打开摄像头,测试了......
  • P1563 [NOIP2016 提高组] 玩具谜题
    1.题目介绍2.题解2.1模拟思路有一个大坑,题目给你的小人顺序是按逆时针给的,不是顺时针!!!跟顺时针相比掉一下顺序就行。看似一共有四种情况:[0,0],[0,1],[1,0],[1,1],其实可以简化分为两种情况,因为[0,0]和[1,1]都代表你要顺时针数,[1,0],[0,1]都代表你要逆时针数代码#include<b......
  • 15 个写代码的好习惯(可以减少 80% 非业务的 bug)
    引言作为一名刚入行的程序员,平时在编写代码时最好养成一些好习惯,这样可以避免或减少各种非业务的bug,从而提高开发效率,这里总结了常见的15个平时写代码的好习惯,希望对你有所帮助。1.修改完代码,记得自测一下「改完代码,自测一下」是每位程序员必备的基本素养。尤其不要抱有这......
  • 面试经典 150题 (四)
    向前移动元素需要k的值,所以移动需要放在最后面。classSolution{publicintremoveDuplicates(int[]nums){if(nums.length<1)return0;intcurNum=nums[0];intk=0;intcount=0;inti;for(i=0;i......
  • Excel表格转GDScript插件的使用 学习笔记
    【【蘩】[Godot教程]Excel表格转GDScript插件的使用】ConfigHelper导出生成在excels文件夹下。添加新的字符串。导出表格,会被忽略掉的(如注释内容)"ignore":true......
  • Springcloud学习笔记61---Spring MVC的拦截器HandlerInterceptor
    1. HandlerMethod介绍HandlerMethod它作为SpringMVC的非公开API,可能绝大多数小伙伴都对它比较陌生,但我相信你对它又不是那么的生疏,因为你可能没用过但肯定见过。比如SpringMVC的拦截器HandlerInterceptor的拦截方法的第三个入参Objecthandler,虽然它是Object类型,但其实绝大部......
  • 【学习笔记】链式前向星
    链式前向星,是一种邻接表存图的方式。本质上是用数组模拟一个链表。适合存各种类型的图,但是查询两节点间的边是否存在很不方便,对出边进行排序也很麻烦。#include<iostream>#include<algorithm>#include<cstring>#include<queue>usingnamespacestd;constintN=1e5+5;type......
  • 读论文-基于自监督学习的序列推荐算法
    前言今天读的文章为一篇名叫《基于自监督学习的序列推荐算法》的期刊论文,文章于2023年8月15日发表在自然科学报上,这篇论文的引用为:[1]闫猛猛,汪海涛,贺建峰等.基于自监督学习的序列推荐算法[J].重庆邮电大学学报(自然科学版),2023,35(04):722-731.摘要原文如下:针对现有序列......