Я хочу читать отфильтрованные данные из экземпляра Mysql, используя задание AWS glue. Поскольку соединение jdbc с клеем не позволяет мне отодвинуть предикат, я пытаюсь явно создать соединение jdbc в моем коде.
Я хочу запустить запрос выбора с предложением 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 WHERE 1 = 0' в строке 1
Разве это не должно работать? Как получить отфильтрованные данные с помощью соединения JDBC без чтения всей таблицы во фрейм данных?