spark连接Oracle数据库,Spark通过jdbc采用分区的方式从oracle读数据

spark通过jdbc可以从oracle中直接读取数据,返回dataframe。有时由于数据量较大,我们可以采用分区方式通过jdbc多线程并行从oracle中读取数据。

- oracle中的数据如下

TIME字段是年月,为字符串类型,ACCOUNT_BOOK为INT类型

8fa1557d2143

image.png

object OraclePartitionReadTest {

def main(args: Array[String]): Unit = {

val spark = spark = SparkSession.builder()

.appName(appName)

.master("local")

.getOrCreate()

// 1. 通过jdbc从oracle中直接读取数据,不分区

val dfReadFromOra = spark.read.jdbc(url, "tableName", properties)

println(dfReadFromOra.count())

/* 2. 通过设定字段的条件来划分分区。

如下把TIME字段,按日期区间划分为两个子区间,[2018-01,2018-12]为一个区间,[2019-01,2019-12]为一个区间。定义一个字符串数组来存放区间,区间个数即为spark从oracle读取数据时的分区个数。

*/

val whereClause =

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我了解到您想了解如何通过JDBC连接MySQL数据库并使用Spark DataFrame进行数据操作。 首先,您需要在Spark应用程序中引入相应的JDBC驱动程序。如果您使用MySQL数据库,则可以通过以下方式引入MySQL驱动程序: ```scala // Scala val spark = SparkSession.builder() .appName("JDBC example") .config("spark.master", "local") .getOrCreate() // Add MySQL JDBC driver spark.sparkContext.addJar("/path/to/mysql-connector-java.jar") ``` ```java // Java SparkSession spark = SparkSession.builder() .appName("JDBC example") .config("spark.master", "local") .getOrCreate(); // Add MySQL JDBC driver spark.sparkContext().addJar("/path/to/mysql-connector-java.jar"); ``` 接下来,您需要指定MySQL数据库连接参数,例如URL、用户名和密码等。以下是一个示例: ```scala // Scala val jdbcUrl = "jdbc:mysql://localhost:3306/mydatabase" val connectionProperties = new Properties() connectionProperties.put("user", "myuser") connectionProperties.put("password", "mypassword") ``` ```java // Java String jdbcUrl = "jdbc:mysql://localhost:3306/mydatabase"; Properties connectionProperties = new Properties(); connectionProperties.put("user", "myuser"); connectionProperties.put("password", "mypassword"); ``` 现在,您可以使用Spark DataFrame API来读取MySQL数据库中的数据。以下是一个示例: ```scala // Scala val df = spark.read.jdbc(jdbcUrl, "mytable", connectionProperties) df.show() // Filter data val filteredDf = df.filter($"age" > 30) filteredDf.show() // Write data filteredDf.write.jdbc(jdbcUrl, "filtered_table", connectionProperties) ``` ```java // Java Dataset<Row> df = spark.read().jdbc(jdbcUrl, "mytable", connectionProperties); df.show(); // Filter data Dataset<Row> filteredDf = df.filter(col("age").gt(30)); filteredDf.show(); // Write data filteredDf.write().jdbc(jdbcUrl, "filtered_table", connectionProperties); ``` 以上示例演示了如何使用Spark DataFrame API读取、过滤和写入MySQL数据库中的数据。您可以根据自己的需求进行相应的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值