Почему неправильные типы данных при использовании опции inferSchema как true в spark scala? - PullRequest
0 голосов
/ 08 сентября 2018

Я читаю файл USA_Housing.csv, столбцы которого (Средний доход по районам, средний по возрасту дом, средний по количеству комнат, средний по количеству спален, населенный пункт, цена, адрес) все столбцы имеют числовое значение, кроме адреса при чтении данных по этому:

import org.apache.spark.sql.SparkSession val spark = SparkSession.builder().getOrCreate() val data = spark.read.option("header","true").option("inferSchema","true").format("csv").load("USA_Housing.csv") data.printSchema()

вывод printSchema:

 |-- Avg Area Income: string (nullable = true)
 |-- Avg Area House Age: string (nullable = true)
 |-- Avg Area Number of Rooms: double (nullable = true)
 |-- Avg Area Number of Bedrooms: double (nullable = true)
 |-- Area Population: double (nullable = true)
 |-- Price: double (nullable = true)
 |-- Address: string (nullable = true)

как средний доход области и возраст дома равны строка , но они действительны double в файле CSV.

когда я открываю данные с помощью ATOM, это отображается как:

Avg Area Income,Avg Area House Age,Avg Area Number of Rooms,Avg Area Number of Bedrooms,Area Population,Price,Address
79545.45857431678,5.682861321615587,7.009188142792237,4.09,23086.800502686456,1059033.5578701235,"208 Michael Ferry Apt. 674
Laurabury, NE 37010-5101"
79248.64245482568,6.0028998082752425,6.730821019094919,3.09,40173.07217364482,1505890.91484695,"188 Johnson Views Suite 079
Lake Kathleen, CA 48958"

Ответы [ 2 ]

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

Настройка multiLine на true должна работать.

val data = spark.read.option("header","true").option("inferSchema","true").option("multiLine", "true").format("csv").load("USA_Housing.csv")
0 голосов
/ 08 сентября 2018

CSV (из kaggle) кажется неправильно сформированным, в столбце адреса есть разрыв строки. Таким образом, первый столбец фактически анализируется как:

+------------------+
|               _c0|
+------------------+
| 79545.45857431678|
|         Laurabury|
| 79248.64245482568|
|     Lake Kathleen|
|61287.067178656784|
|        Danieltown|
| 63345.24004622798|
|     FPO AP 44820"|
|59982.197225708034|
|     FPO AE 09386"|

Поэтому искра принимает это как строку

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