当前位置:Gxlcms > 数据库问题 > Spark JDBC To Other Databases

Spark JDBC To Other Databases

时间:2021-07-01 10:21:17 帮助过:24人阅读


url:要连接的JDBC URL。列如:jdbc:mysql://ip:3306
dbtable:应该读取的JDBC表。可以使用括号中的子查询代替完整表。
driver:用于连接到此URL的JDBC驱动程序的类名,列如:com.mysql.jdbc.Driver

partitionColumn, lowerBound, upperBound, numPartitions
这些options仅适用于read数据。这些options必须同时被指定。他们描述,如何从多个workers并行读取数据时,分割表。
partitionColumn:必须是表中的数字列。
lowerBound和upperBound仅用于决定分区的大小,而不是用于过滤表中的行。
表中的所有行将被分割并返回。

fetchsize:仅适用于read数据。JDBC提取大小,用于确定每次获取的行数。这可以帮助JDBC驱动程序调优性能,这些驱动程序默认具有较低的提取大小(例如,Oracle每次提取10行)。

batchsize:仅适用于write数据。JDBC批量大小,用于确定每次insert的行数。
这可以帮助JDBC驱动程序调优性能。默认为1000。

isolationLevel:仅适用于write数据。事务隔离级别,适用于当前连接。它可以是一个NONE,READ_COMMITTED,READ_UNCOMMITTED,REPEATABLE_READ,或SERIALIZABLE,对应于由JDBC的连接对象定义,缺省值为标准事务隔离级别READ_UNCOMMITTED。请参阅文档java.sql.Connection。

truncate:仅适用于write数据。当SaveMode.Overwrite启用时,此选项会truncate在MySQL中的表,而不是删除,再重建其现有的表。这可以更有效,并且防止表元数据(例如,索引)被去除。但是,在某些情况下,例如当新数据具有不同的模式时,它将无法工作。它默认为false。

createTableOptions:仅适用于write数据。此选项允许在创建表(例如CREATE TABLE t (name string) ENGINE=InnoDB.)时设置特定的数据库表和分区选项。



spark jdbc read MySQL

import java.util.Properties

val readConnProperties = new Properties()
readConnProperties.put("driver", "com.mysql.jdbc.Driver")
readConnProperties.put("user", "test")
readConnProperties.put("password", "123456")

val jdbcDF = spark.read.jdbc(
  "jdbc:mysql://ip-:3306",
  "test.user_test",
  readConnProperties)

jdbcDF.show
+---+------+---+
|uid|gender|age|
+---+------+---+
|  2|     2| 20|
|  3|     1| 30|
|  4|     2| 40|
|  5|     1| 50|
|  6|     2| 60|
|  1|     1| 18|
+---+------+---+

//默认并行度为1
jdbcDF.rdd.partitions.size
res5: Int = 1

 

Spark JDBC To Other Databases

标签:.sql   不同的   work   read   分割   shell   strong   ram   rac   

人气教程排行