Scala: создать имена столбцов в датафрейме

пытаюсь присвоить имена столбцам в выгружаемом датафрейме. для выгрузки использую следующий код:

'''def main(args: Array[String]): Unit = {
    val spark = SparkSession.builder()
      .appName(name = "Create DataFrame from CSV file")
      .master(master = "local")
      .getOrCreate()

    spark.sparkContext.setLogLevel("ERROR")

    val csv_path = "data...csv"
    val df = spark.read
      .option("header", false)
      .csv(csv_path)'''

датафрейм получается с именами поумолчанию: _c0/_c1/_c2 мне же нужно присвоить, например: full_name/date/время пробовала с withcolumnrename - не получается


Ответы (1 шт):

Автор решения: EnverOsmanov
  1. Можно с помощью метода .toDF:
val df2 = df.toDF("full_name "date", "время")

  1. Если типы известны заранее, можно указать структуру перед чтением:
    import org.apache.spark.sql.Encoders
    import java.sql.Timestamp
    import java.sql.Date
    
    case class User(full_name: String, date: Date, `время`: Timestamp)
    
    spark.read
      .schema(Encoders.product[User].schema)
      .option("inferSchema", value = false)
      .option("header", false)
      .csv(csv_path)
→ Ссылка