当前位置: 首页 > wzjs >正文

添加qq好友的超链接做网站网页设计师英文

添加qq好友的超链接做网站,网页设计师英文,私人做网站建设,微信公众号登录页面以下是使用 Spark/SparkSQL 连接 MySQL 数据库、添加数据和读取数据的完整示例(需提前准备 MySQL 驱动包): 一、环境准备 1. 下载 MySQL 驱动 - 下载 mysql-connector-java-8.0.33.jar (或对应版本),放…

以下是使用 Spark/SparkSQL 连接 MySQL 数据库、添加数据和读取数据的完整示例(需提前准备 MySQL 驱动包):

一、环境准备

1. 下载 MySQL 驱动

- 下载  mysql-connector-java-8.0.33.jar (或对应版本),放入 Spark 的  jars  目录,或提交任务时用  --jars  指定路径。

2. 启动 SparkSession

scala

import org.apache.spark.sql.SparkSession

val spark = SparkSession.builder()

  .appName("Spark MySQL Demo")

  .master("local[*]") // 本地模式,集群环境需调整

  .getOrCreate()

 

二、连接 MySQL 并读取数据

方式 1:使用  spark.read.jdbc  读取

scala

// 配置连接参数

val jdbcUrl = "jdbc:mysql://localhost:3306/test_db"

val tableName = "users"

val connectionProperties = new java.util.Properties()

connectionProperties.put("user", "root")

connectionProperties.put("password", "your_password")

connectionProperties.put("driver", "com.mysql.cj.jdbc.Driver")

// 读取表数据

val df = spark.read.jdbc(jdbcUrl, tableName, connectionProperties)

// 显示数据

df.show()

 

方式 2:使用 SparkSQL 执行查询

scala

// 直接执行 SQL 查询(需指定完整表名)

val queryDF = spark.read.jdbc(

  jdbcUrl,

  s"(SELECT id, name FROM $tableName WHERE age > 18) AS temp", // 子查询防注入

  connectionProperties

)

queryDF.show()

 

三、向 MySQL 插入数据

场景 1:写入新表(自动创建)

scala

// 创建示例数据

val data = Seq(

  (3, "Alice", 25, java.sql.Timestamp.valueOf("2023-01-01 00:00:00")),

  (4, "Bob", 30, java.sql.Timestamp.valueOf("2023-02-02 00:00:00"))

)

val schema = StructType(

  Seq(

    StructField("id", IntegerType, false),

    StructField("name", StringType, true),

    StructField("age", IntegerType, true),

    StructField("create_time", TimestampType, true)

  )

)

val insertDF = spark.createDataFrame(data, schema)

// 写入 MySQL(若表不存在则自动创建,需确保库存在)

insertDF.write.format("jdbc")

  .option("url", jdbcUrl)

  .option("dbtable", "users") // 表名

  .option("user", "root")

  .option("password", "your_password")

  .option("driver", "com.mysql.cj.jdbc.Driver")

  .mode("append") // 追加模式(可选:overwrite/ignore/replace)

  .save()

 

场景 2:向现有表追加数据

scala

// 读取现有数据并新增记录

val existingDF = spark.read.jdbc(jdbcUrl, tableName, connectionProperties)

val newData = Seq((5, "Charlie", 35, java.sql.Timestamp.valueOf("2023-03-03 00:00:00")))

val newDF = spark.createDataFrame(newData, schema)

// 合并后写入(追加模式)

val combinedDF = existingDF.union(newDF)

combinedDF.write.jdbc(

  jdbcUrl,

  tableName,

  connectionProperties,

  "append" // 模式可通过第四个参数指定

)

 

四、关键参数说明 

 mode:  

写入模式: append (追加)、 overwrite (覆盖)、 ignore (忽略冲突) 

 dbtable :

目标表名(支持库名.表名格式,如  test_db.users ) 

 partitionColumn :

分区列(大数据量时用于并行读取,需配合  lowerBound / upperBound ) 

 fetchSize :

每次从数据库拉取的行数(优化性能,默认 1000) 

 createTableOptions :

建表时的额外参数(如  ENGINE=InnoDB   CHARSET=utf8 ) 

 

五、注意事项

1. 驱动版本匹配

- MySQL 8.0+ 需使用  mysql-connector-java-8.0+ ,低版本数据库用  5.1.x  驱动。

2. 权限问题

- 确保 MySQL 用户有  INSERT / SELECT  权限:

sql

GRANT INSERT, SELECT ON test_db.* TO 'user'@'localhost';

3. 大数据量优化

- 并行写入:通过  numPartitions  和  partitionColumn  分区(需指定主键或索引列)。

- 批量提交:设置  batchSize=1000  减少连接开销:

scala

.option("batchSize", "1000")

4. 类型映射

- Spark 与 MySQL 类型需匹配(如  StringType  →  VARCHAR , TimestampType  →  DATETIME )。

六、完整示例(Scala 版)

scala

import org.apache.spark.sql.{SparkSession, Row}

import org.apache.spark.sql.types.{StructType, StructField, IntegerType, StringType, TimestampType}

import java.sql.Timestamp

// 1. 初始化 SparkSession

val spark = SparkSession.builder()

  .appName("MySQL Demo")

  .master("local[*]")

  .getOrCreate()

// 2. 定义连接参数

val jdbcUrl = "jdbc:mysql://localhost:3306/test_db"

val tableName = "users"

val props = new java.util.Properties()

props.setProperty("user", "root")

props.setProperty("password", "your_password")

props.setProperty("driver", "com.mysql.cj.jdbc.Driver")

// 3. 读取数据

val df = spark.read.jdbc(jdbcUrl, tableName, props)

println("读取的数据:")

df.show()

// 4. 准备插入数据

val newData = Seq(

  Row(6, "David", 28, new Timestamp(System.currentTimeMillis()))

)

val schema = new StructType(

  Array(

    StructField("id", IntegerType, nullable = false),

    StructField("name", StringType, nullable = true),

    StructField("age", IntegerType, nullable = true),

    StructField("create_time", TimestampType, nullable = true)

  )

)

val insertDF = spark.createDataFrame(spark.sparkContext.parallelize(newData), schema)

// 5. 插入数据(追加模式)

insertDF.write.jdbc(jdbcUrl, tableName, "append", props)

println("数据插入完成!")

// 6. 验证插入结果

val updatedDF = spark.read.jdbc(jdbcUrl, tableName, props)

updatedDF.show()

// 7. 停止 SparkSession

spark.stop()

 

执行后可通过 MySQL 客户端验证数据是否正确写入。

http://www.dtcms.com/wzjs/593653.html

相关文章:

  • 用于公司网站建设的费用记帐分录网站绑定微信公众号
  • 如何制作一个优秀网站建设wordpress 4.9.5 太卡
  • 游戏网站开发什么意思优化方案物理必修一答案
  • 网站开发需求网wordpress安全_
  • 建站平台控制上海单个关键词优化
  • 建立的网站百度搜索不到如何制作微信下单小程序
  • 工会网站开发需求分析链接网站怎么做
  • 网站建设文献综述范文国企单位网站建设方案
  • 搜索不到的网站360建筑网怎么注销账号
  • 英文营销网站服务器租用泰海
  • 网站群如何做网站智能模板网站建设哪家好
  • 建立网站的条件有什么做照片书的网站
  • 电子商务网站开发技术的背景哈尔滨网站建设哪家有
  • 大专学网站开发与运营如何进行市场推广
  • 餐饮网站建设设计网站开发背景和目的
  • 曲周专业做网站建设银行秋招网站
  • 改wordpress地址还是站点地址某物流网站后台源码
  • 谁知道我的世界做行为包的网站啊建设银行app忘记登录密码
  • 做网站建设赚钱吗深圳建设工程交易平台
  • 深圳兼职做网站智联人才招聘网
  • 福田做网站的自适应网站运动div如何设置的
  • 天津建站商城app推广
  • 建高级网站网站模板编号
  • 口碑好的网站推广价格网络规划设计师和中级对比
  • 网站域名找回密码 用户名百度抓取不到网站
  • 沈阳专业网站建设公司排名成都建设网站哪家好
  • 公司级做宣传图的网站电子商务网站建设 课后答案
  • 唐山网站提升排名wordpress如何不显示评论
  • 婚纱摄影类网站模板wordpress两侧有空白
  • 建立网站考虑的三大要素中国十大科技公司