我将数据从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()
我的Intellij IDE一直在说
&#34;类型不匹配,预期布尔值或长或双或字符串,实际: 阵列[字符串]&#34;
在谓词中。不知道这有什么不对。任何人都可以看到这个错误吗?另外我如何在这里使用获取大小?
感谢。
答案 0 :(得分:5)
要option
方法仅接受Boolean
,Long
,Double
或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.
)
您可以看到示例here。