Я работал над созданием функции, которая принимает в качестве аргументов строку подключения, запрос SQL и свойства подключения.
Первый сценарий работает нормально, но второй сценарий не работает с указанной ошибкой.
Первые сценарии работ:
val readSqlData = spark.read.jdbc(connectionString,_:String,connectionProps)
val data= readSqlData("(SELECT * FROM TestTable) as TestTable")
Приведенные выше две строки дают мне значение данных типа DataFrame.
Второй сценарий:
Теперь я пытался создать функцию, которую можно вызывать из любого места в качестве вспомогательной функции, поэтому нам не нужно передавать строку соединения и свойства соединения для каждого оператора SQL, который мы создаем, как показано ниже:
import org.apache.spark.sql.DataFrame
def PerformSqlOperations(): String => DataFrame = {
spark.read.jdbc(connectionString,_:String,connectionProps)
}
Функция компилируется правильно, но, когда я вызываю эту функцию, передавая Sql Query для выполнения, как показано ниже:
PerformSqlOperations("(SELECT * FROM TestTable) as TestTable")
Теперь я получаю сообщение об ошибке слишком много аргументов для метода PerformSqlOperations () ..
Я не могу понять, почему это происходит, поскольку приведенный выше код работает аналогично этому, и я просто пытался обернуть его внутри функции, чтобы упростить работу для нескольких вызовов.
Любая помощь или идея могут помочь мне понять, почему создание и выполнение функции приводит к упомянутой ошибке.