Поведение spark.read.csv с inferschema = True в случае загрузки нескольких файлов - PullRequest
0 голосов
/ 16 мая 2018

Я сталкиваюсь с трудностью (довольно странный результат) при попытке загрузить несколько файлов CSV одновременно в Spark с помощью

df = spark.read.csv('/dir/*.csv', header=True, inferSchema=True)
df.printschema()
# Sale_Value  String(nullable=true)  # it should be Double/float
# Name String # Fine for all string columns

Так что в основном все мои целые и двойные столбцы преобразуются в тип String, и яЯ ожидаю, что это будет двойной тип, так как я передаю параметр inferschema как true.

Я проверил свои данные и подтвердил, что нет нулевого значения или есть строковое значение.

Странная вещь ->

  1. Я прочиталкаждый файл в отдельные dfs, df1 = spark.read.csv (file1, inferSchema = True), df2 = spark.read.csv (file2, inferSchema = True), затем распечатывает схему для каждого кадра данных, все схемы соответствуют ожидаемым (dpouble - это двойной, строка - строка)

  2. Я начал добавлять каждое отдельное dfs в один df, например df = df1.union (df2), df = df.union (df2) ..и т. д. и проверил печать df.printSchema (), тогда также все результаты, как и ожидалось ... Никаких проблем в этом.

Так что я путаюсь с поведением при загрузке нескольких файлов в одномзагрузить ставку (*. csv).

Есть ли что-то, чего мне не хватает в поведении inferSchema.Пожалуйста, пролите немного света.

Редактировать

Мои данные заключены в двойную цитату (чтобы не разбивать записи, если в полях есть запятая), например: "name", "sale_target", "sale_V",«пол» ....

У меня есть 3 файла, из которых 2 файла заключены в кавычки, а один файл не заключен в кавычки (вот почему я столкнулся с этой проблемой, яуронил файл без кавычек, и угадайте, что все работало идеально).

Так что обязательно, если я использую / читаю / загружаю несколько файлов CSV, то либо я должен использовать all-files-QuoteEnclosedили все-файл-без-QuoteEnclosed ??

Расположение файла https://github.com/satya-panda/king-s-things

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