Значения становятся нулевыми для всех столбцов в фрейме данных spark scala

У меня есть набор данных ниже в качестве входных данных

816|27555832600|01|14|25|  |  
825|54100277425|14|03|25|15|  
9003|54100630574|  |  |  |  |  
809|51445926423|12|08|25|17|  

Получение ниже в качестве вывода:

null|null|null|null|null|null|
825|54100277425|  14|   3|  25|  15|
null|null|null|null|null|null|
809|51445926423|  12|   8|  25|  17|

Ожидаемый результат

816|27555832600|01|14|25|null|  
825|54100277425|14|03|25|15|  
9003|54100630574|null|null|null|null|  
809|51445926423|12|08|25|17|  

Я попробовал приведенный ниже код для загрузки файла .txt или .bz2.

val dataset = sparkSession.read.format(formatType)
        .option("DELIMITER", "|"))
        .schema(schema_new)
        .csv(dataFilePath)

Какой код вы пробовали..

stack0114106 21.12.2020 07:42

Набор данных val = sparkSession.read.format("текст) .option("DELIMITER", "|") .schema(schema_new) .csv(dataFilePath)

user13748181 21.12.2020 07:43

В вашем файле могут быть пустые строки.. удалите его, а затем попробуйте

stack0114106 21.12.2020 07:43

Я должен использовать функцию trim() для удаления пробелов

user13748181 21.12.2020 07:45

Полностью удалите пустые строки перед чтением в spark.

stack0114106 21.12.2020 07:46

Как удалить все пустые строки вместе с помощью искрового кода

user13748181 21.12.2020 07:48

Если вы хотите удалить с помощью spark.. тогда вы не можете прочитать его как csv с разделителями каналов.. вам нужно прочитать всю строку как один столбец..

stack0114106 21.12.2020 07:50

Я не могу этого сделать. Мне нужно прочитать файл сжатия .gzip2 в текстовом формате, создать собственную схему и отобразить правильный результат.

user13748181 21.12.2020 07:52

Затем отфильтруйте после прочтения файла..

stack0114106 21.12.2020 07:54

Можешь подсказать как это сделать

user13748181 21.12.2020 07:54

Какова схема, которую вы предоставляете. Я имею в виду, можете ли вы предоставить свой schema_new.

Karthik 21.12.2020 09:41

@user13748181 user13748181 Не могли бы вы предоставить схему, которую вы используете во время чтения вопроса, чтобы лучше понять, что вы делаете?

Nikunj Kakadiya 04.01.2021 07:50
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
2
12
221
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я попробовал вашу формулировку проблемы. Я использую версию Spark 3.0.1 для решения этого варианта использования. Он работает, как ожидалось. попробуйте ниже фрагмент кода.

val sampleDS = spark.read.options(Map("DELIMITER"->"|")).csv("D:\\DataAnalysis\\DataSample.csv")
sampleDS.show()

Output ->
+----+-----------+---+---+---+---+---+
| _c0|        _c1|_c2|_c3|_c4|_c5|_c6|
+----+-----------+---+---+---+---+---+
| 816|27555832600| 01| 14| 25|   |   |
| 825|54100277425| 14| 03| 25| 15|   |
|9003|54100630574|   |   |   |   |   |
| 809|51445926423| 12| 08| 25| 17|   |
+----+-----------+---+---+---+---+---+

Подумайте, есть ли у вас пустая строка во входных данных.

Ввод данных после добавления пустой строки

816|27555832600|01|14|25|  |  
825|54100277425|14|03|25|15|  
9003|54100630574|  |  |  |  |  
||||
809|51445926423|12|08|25|17| 

После чтения данных вы можете просто использовать sampleDS.na.drop.show() для удаления пустых или нулевых данных.

Обратите внимание, что если у вас есть только пустая строка, Spark не учитывает ее в фрейме данных. Spark удаляет пустую строку при чтении самого себя.

Мой файл в формате .txt, и я не могу построить схему, как вы упомянули.

user13748181 21.12.2020 08:19

Я получаю ошибку в вашем синтаксисе. В настоящее время я пытаюсь использовать код ниже. набор данных val = sparkSession.read.format(formatType) .option("DELIMITER", "|") .schema(schema_new) .csv(dataFilePath)

user13748181 21.12.2020 08:20

Ошибка ушла, но вывод такой же. Вместо этого полные строки равны нулю

user13748181 21.12.2020 08:43

У меня нет пустой строки в моих данных. У меня есть несколько столбцов, в которых нет значений (содержит только 2 пробела), а в выходной полной строке появляется значение null.

user13748181 21.12.2020 08:45

Пожалуйста, Spark, сведения о версии Scala

Vijay_Shinde 21.12.2020 08:56

Искровая версия 2.4.5 и скала версии 2.11

user13748181 21.12.2020 08:58

Я использую версию Spark 3.0.1 со Scala 2.12. Может быть некоторая совместимость версий, поэтому мой код не работает для вас.

Vijay_Shinde 21.12.2020 08:59

Может быть причиной

user13748181 21.12.2020 09:03

Я изменил вопрос .. не могли бы вы проверить его сейчас.

user13748181 21.12.2020 09:14

Другие вопросы по теме