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