Я хочу прочитать отфильтрованные данные из экземпляра Mysql, используя задание AWS glue. Так как клеевое соединение jdbc не позволяет мне выдвинуть предикат, я пытаюсь явно создать соединение jdbc в своем коде.
Я хочу выполнить запрос select с предложением where к базе данных Mysql, используя соединение jdbc, как показано ниже
import com.amazonaws.services.glue.GlueContext
import org.apache.spark.SparkContext
import org.apache.spark.sql.SparkSession
object TryMe {
def main(args: Array[String]): Unit = {
val sc: SparkContext = new SparkContext()
val glueContext: GlueContext = new GlueContext(sc)
val spark: SparkSession = glueContext.getSparkSession
// Read data into a DynamicFrame using the Data Catalog metadata
val t = glueContext.read.format("jdbc").option("url","jdbc:mysql://serverIP:port/database").option("user","username").option("password","password").option("dbtable","select * from table1 where 1=1").option("driver","com.mysql.jdbc.Driver").load()
}
}
Сбой с ошибкой
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException У вас есть
ошибка в вашем синтаксисе SQL; проверьте руководство, которое соответствует вашему
Версия сервера MySQL для правильного синтаксиса для использования рядом с 'select * from
table1, где 1 = 1, ГДЕ 1 = 0 'в строке 1
Разве это не должно работать? Как получить отфильтрованные данные, используя соединение JDBC, не считывая всю таблицу в кадр данных?