Невозможно отобразить записи в CSV на объекты класса в Scala / Spark - PullRequest
0 голосов
/ 16 января 2020

У меня есть ноутбук Jupyter, на котором запущено ядро ​​spylon (Scala / Spark).

В настоящее время я пытаюсь загрузить записи из csv в RDD и затем сопоставить каждую запись с объектами " Погода "класс следующим образом:

val lines = scala.io.Source.fromFile("/path/to/nycweather.csv").mkString
println(lines)

val sqlContext = new org.apache.spark.sql.SQLContext(sc)

//Next, you need to import a library for creating a SchemaRDD. Type this:
import sqlContext.implicits._

//Create a case class in Scala that defines the schema of the table. Type in:
case class Weather(date: String, temp: Int, precipitation: Double)

//Create the RDD of the Weather object:
val weather = sc.textFile("/path/to/nycweather.csv").map(_.split(",")). map(w => Weather(w(0), w(1).trim.toInt, w(2).trim.toDouble)).toDF()

//It all works fine until the last line above.
//But when I run this line of code:
weather.first()

Все это всплывает со следующим сообщением об ошибке

error obtained after weather.first()

сообщение имеет пару больше строк, но я опущен, чтобы быть более заметным.

Может кто-нибудь указать, почему я получаю эту ошибку и предложить изменения кода для ее устранения?

1 Ответ

1 голос
/ 16 января 2020

Вы используете старый синтаксис RDD для чтения CSV. Существует более простой способ чтения CSV:

    val weather1 = spark.read.csv("path to nycweather.csv").toDF("date","temp","precipitation")
    weather1.show()

Входной файл содержит следующие данные

1/1/2010,30,35.0
2/4/2015,35,27.9

Результат

+--------+----+-------------+
|    date|temp|precipitation|
+--------+----+-------------+
|1/1/2010|  30|         35.0|
|2/4/2015|  35|         27.9|
+--------+----+-------------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...