У меня есть набор данных ниже в качестве входных данных
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)
Набор данных val = sparkSession.read.format("текст) .option("DELIMITER", "|") .schema(schema_new) .csv(dataFilePath)
В вашем файле могут быть пустые строки.. удалите его, а затем попробуйте
Я должен использовать функцию trim() для удаления пробелов
Полностью удалите пустые строки перед чтением в spark.
Как удалить все пустые строки вместе с помощью искрового кода
Если вы хотите удалить с помощью spark.. тогда вы не можете прочитать его как csv с разделителями каналов.. вам нужно прочитать всю строку как один столбец..
Я не могу этого сделать. Мне нужно прочитать файл сжатия .gzip2 в текстовом формате, создать собственную схему и отобразить правильный результат.
Затем отфильтруйте после прочтения файла..
Можешь подсказать как это сделать
Какова схема, которую вы предоставляете. Я имею в виду, можете ли вы предоставить свой schema_new.
@user13748181 user13748181 Не могли бы вы предоставить схему, которую вы используете во время чтения вопроса, чтобы лучше понять, что вы делаете?
Я попробовал вашу формулировку проблемы. Я использую версию 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, и я не могу построить схему, как вы упомянули.
Я получаю ошибку в вашем синтаксисе. В настоящее время я пытаюсь использовать код ниже. набор данных val = sparkSession.read.format(formatType) .option("DELIMITER", "|") .schema(schema_new) .csv(dataFilePath)
Ошибка ушла, но вывод такой же. Вместо этого полные строки равны нулю
У меня нет пустой строки в моих данных. У меня есть несколько столбцов, в которых нет значений (содержит только 2 пробела), а в выходной полной строке появляется значение null.
Пожалуйста, Spark, сведения о версии Scala
Искровая версия 2.4.5 и скала версии 2.11
Я использую версию Spark 3.0.1 со Scala 2.12. Может быть некоторая совместимость версий, поэтому мой код не работает для вас.
Может быть причиной
Я изменил вопрос .. не могли бы вы проверить его сейчас.
Какой код вы пробовали..