Удалить пустые строки из результата запроса искры - PullRequest
0 голосов
/ 06 марта 2020

Я использую Scala 2.11, и у меня версия spark 2.4.4. У меня есть запрос ниже из набора json файлов.

import org.apache.spark.sql.types.{StructType, StructField, IntegerType, StringType, ArrayType, FloatType, TimestampType}

val schema = 
  StructType(
  List(
    StructField("SMS",StringType,false),
    StructField("SMSCorrupt", StringType, false)
  ))

val SMSCorruptDF =  spark.read
  .schema(schema)
  .option("mode", "PERMISSIVE")
  .option("columnNameOfCorruptRecord", "SMSCorrupt")
  .json("/mnt/UbiqLog4UCI/14_F/log_1-6-2014.txt")
  //.na.drop()

display(SMSCorruptDF)

Мой результат похож на изображение ниже:

enter image description here

Мне нужно иметь только строки, в которых по крайней мере один из моих столбцов содержит данные. когда я выполнял свой запрос с помощью .na.drop (), результат был пустым.

enter image description here

Ответы [ 2 ]

1 голос
/ 06 марта 2020

Решение показано ниже:

scala> val df = Seq((null, Some(2)), (Some("a"), Some(4)), (Some("c"), Some(5)), (Some("b"), null),(null,null)).toDF("A", "B")
df: org.apache.spark.sql.DataFrame = [A: string, B: int]

scala> df.show
+----+----+
|   A|   B|
+----+----+
|null|   2|
|   a|   4|
|   c|   5|
|   b|null|
|null|null|
+----+----+


scala> import org.apache.spark.sql.functions._
import org.apache.spark.sql.functions._

scala> val cond = df.columns.map(x => col(x).isNotNull).reduce(_ || _)
cond: org.apache.spark.sql.Column = ((A IS NOT NULL) OR (B IS NOT NULL))

scala> df.filter(cond).show
+----+----+
|   A|   B|
+----+----+
|null|   2|
|   a|   4|
|   c|   5|
|   b|null|
+----+----+

Дайте мне знать, если это поможет !!

0 голосов
/ 07 марта 2020

Не понимаю, почему нельзя просто использовать

df.na.drop(how="all")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...