Получение ошибки при определении схемы для CSV-файла в спарк с использованием Scala - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь определить схему для файла CSV, используя case class в Scala.

case class userSchema(name : String,
                      place : String,
                      designation : String)
object userProcess {
  val spark = SparkSession.builder().appName("Spark_processing for Hbase").master("yarn").getOrCreate()
  import spark.implicits._
  val colNames = classOf[userSchema].getDeclaredFields.map(f=> f.getName)
    val file = spark.read.option("inferSchema", false).option("header", false).csv("D:\\wSapce\\User.csv").toDF(colNames:_*).as(userSchema)

}

Но в последней строке (для файла значений) я получаю ниже ошибку времени компиляции:

overloaded method value as with alternatives: (alias: Symbol)org.apache.spark.sql.Dataset[org.apache.spark.sql.Row] <and> (alias: String)org.apache.spark.sql.Dataset[org.apache.spark.sql.Row] <and> [U](implicit evidence$2: org.apache.spark.sql.Encoder[U])org.apache.spark.sql.Dataset[U] cannot be applied to (tavant.user.userSchema.type)

Есть идеи, почему я получаю эту ошибку ...?

1 Ответ

0 голосов
/ 24 сентября 2018

Проблема заключается в следующей строке:

val file = spark.read.option("inferSchema", false).option("header", false).csv("D:\\wSapce\\User.csv").toDF(colNames:_*).as(userSchema)

spark.read.option (). Csv - вернет DataFrame.Вам не нужно снова использовать метод dF () для преобразования в DataFrame.

Вы можете преобразовать DataFrame в набор данных с определенной схемой (класс case), используя метод as (userSchema), как показано ниже:

val file = spark.read.option("inferSchema", false).option("header", false).csv("D:\\wSapce\\User.csv").as(userSchema)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...