удаление пробелов в DataFrame с использованием SCALA.(Я загрузил файл CSV в RDD, а затем пытался удалить из него пробелы - PullRequest
0 голосов
/ 26 мая 2019

У меня есть данные с ненужными пробелами и значениями Null в моем CSV-файле.Я загрузил этот файл в спарк RDD, пока здесь нет проблем.Теперь я должен удалить пробелы и нулевые значения из этого RDD.Как это сделать, может кто-нибудь помочь мне, пожалуйста?

object Oracle {def main(args: Array[String]): Unit = {
import org.apache.spark.SparkContext
import org.apache.spark.sql.SparkSession    
System.setProperty("hadoop.home.dir","D:\\hadoop\\");
val spark = SparkSession.builder().appName("Schema").master("local[*]").getOrCreate()

import spark.implicits._
import org.apache.spark.sql.functions._
val inpp = spark.read.csv("file:///C:/Users/user/Desktop/xyz.csv")
inpp.show()

val df = inpp.toDF("name")

inpp.select(
    col("name"),
    regexp_replace(col("name"), "\\s+$", ""),
    rtrim(col("name")),
    length(col("name"))
    ).show() }}

Вот мои данные с ненужными пробелами и нулевыми значениями.

Ответы [ 2 ]

0 голосов
/ 27 мая 2019

Вы можете предоставить эти опции в csv reader, чтобы обрезать данные и затем отфильтровать несущественные:

val df = spark.read
.format("csv")
.option("ignoreLeadingWhiteSpace", "true")
.option("ignoreTrailingWhiteSpace", "true")
.option("inferSchema", "true")
.option("header", "true")
.load("file:///C:/Users/user/Desktop/xyz.csv")
.filter(col("name").isNotNull)
.show()
0 голосов
/ 26 мая 2019

Вы можете сделать это следующим образом:

scala> val someDFWithName = Seq((1, "anu rag"), (2,"raj u"),(3, "  ram   "), (4, null), (5, "")).toDF("id", "name")

Теперь отфильтруйте пустые или нулевые значения и примените регулярное выражение для удаления дополнительного пробела:

scala> someDFWithName.filter(col("name") !== "").select(
 |     col("name"),
 |     regexp_replace(col("name"), " ", ""),
 |     length(col("name"))
 |     ).show()

Вывод будет:

+--------+-------------------------+------------+
|    name|regexp_replace(name,  , )|length(name)|
+--------+-------------------------+------------+
| anu rag|                   anurag|           7|
|   raj u|                     raju|           5|
|  ram   |                      ram|           8|
+--------+-------------------------+------------+

Спасибо.

...