scala—在spark jdbc读取方法中使用 predicate

ss2ws0br  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(516)

我正在将数据从sql server拉到hdfs。这是我的片段,

val predicates = Array[String]("int_id < 500000", "int_id >= 500000 && int_id < 1000000")

  val jdbcDF = spark.read.format("jdbc")
      .option("url", dbUrl)
      .option("databaseName", "DatabaseName")
      .option("dbtable", table)
      .option("user", "***")
      .option("password", "***")
      .option("predicates", predicates)
      .load()

我的智者一直这么说
类型不匹配,应为boolean或long或double或string,实际:array[string]
在 predicate 中。不知道这有什么问题。有人知道这有什么问题吗?另外,我如何在这里使用fetch size?
谢谢。

b5lpy0ml

b5lpy0ml1#

这个 option 方法只接受 Boolean 是的, Long 是的, Double s或 String s。通过考试 predicates 作为一个 Array[String] 你必须使用 jdbc 方法,而不是在 format 方法。

val predicates = Array[String]("int_id < 500000", "int_id >= 500000 && int_id < 1000000")

val jdbcDF = spark.read.jdbc(
  url = dbUrl,
  table = table,
  predicates = predicates,
  connectionProperties = new Properties(???) // user, pass, db, etc.
)

你可以在这里看到一个例子。

相关问题