Как передать аргумент методу в Scala - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь передать четвертый (targetFileCount) аргумент методу, как показано ниже

val config = ConfigFactory.load("market_opt_partition.properties")
val targetFileCount = (config.getInt(Code))
writeArray1.par.foreach {
  case (df, path, tog, targetFileCount) => Utility.write(df, path, tog, targetFileCount)
}
object Utility {
    def write(sourceDf: DataFrame, path: String, toggle: String, targetFileCount:Int): Unit

Но я сталкиваюсь с ошибкой ниже,

Error:(368, 12) constructor cannot be instantiated to expected type;
found   : (T1, T2, T3, T4)
required: (org.apache.spark.sql.DataFrame, String, String)
      case (df, path, tog, targetFileCount) => Utility.write(df, path, tog, targetFileCount)

Error:(368, 67) not found: value df
      case (df, path, tog, targetFileCount) => Utility.write(df, path, tog, targetFileCount)

Пожалуйста, дайте мне знать, как исправить то же самое.

Ответы [ 2 ]

1 голос
/ 08 марта 2019

writeArray1 содержит кортеж 3 из org.apache.spark.sql.DataFrame, String, String Таким образом, сопоставление с образцом по 4 параметрам не может работать.

Другой пример:

val l = List(5)
l.map { case (a, b) => a.toString }

Также выдает ту же ошибку:

 error: constructor cannot be instantiated to expected type;
 found   : (T1, T2)
 required: Int
0 голосов
/ 08 марта 2019

Как сказано выше, writeArray1.par содержит кортеж из 3 org.apache.spark.sql.DataFrame, String, String Так что сопоставление с образцом по 4 параметрам не может работать.

Пожалуйста, используйте как ниже.

val config = ConfigFactory.load("market_opt_partition.properties")
val targetFileCount = (config.getInt(Code))
writeArray1.par.foreach {
  case (df, path, tog) => Utility.write(df, path, tog, targetFileCount)
}
object Utility {
    def write(sourceDf: DataFrame, path: String, toggle: String, targetFileCount:Int): Unit
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...