Scala игнорирует импортированных участников - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть следующий фрагмент кода:

package org.test.test.datahelper

import org.apache.spark.rdd.RDD
import org.apache.spark.sql._

class WeatherHelper(sparkSession: SparkSession, weather: DataFrame) {

  def prepareRRRColumn: DataFrame = {
    import org.apache.spark.sql.functions
    weather.withColumn("Year", year(col("DateTime")))

    weather
  }

}

Проблема в том, что Scala (или, вероятно, IntelliJ IDEA) не видит метод year, как col (Cannot resolve symbol year и col)с уважением), несмотря на то, что необходимый импорт находится всего на одну строку выше (однако он не работает, даже если импорт является глобальным).Следуя исходному коду org.apache.spark.sql.functions, я нашел следующие строки:

def col(colName : scala.Predef.String) : org.apache.spark.sql.Column = { /* compiled code */ }
def year(e : org.apache.spark.sql.Column) : org.apache.spark.sql.Column = { /* compiled code */ }

т.е. оба метода существуют.Что я делаю не так?

1 Ответ

0 голосов
/ 26 декабря 2018

Это скорее проблема синтаксиса импорта в Scala.Чтобы импортировать методы (столбцы, год) в классе / пакете function, вы должны использовать.

import org.apache.spark.sql.functions._
// Or import only specific functions 
import org.apache.spark.sql.functions.{col, year}

Вместо

import org.apache.spark.sql.functions
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...