读取镶木地板文件并跳过不遵循模式的行

问题描述 投票:0回答:1

我有一堆镶木地板文件存储在 S3 位置,我想将其作为数据框加载。但是,在执行此操作时,有几行我不想/不需要成为数据框的一部分。以这些行不包含在数据框中的方式过滤镶木地板文件的最佳方法是什么?镶木地板文件由压缩的 csv 文件组成

我想使用的模式是:

schema = StructType() \
      .add("col_1",LongType(),True) \
      .add("col_2",StringType(),True) \
      .add("col_3",StringType(),True)

我要跳过的行是 col_1 为空或字符串值和/或 col_2 为空的行。希望这个问题有点道理......

apache-spark pyspark apache-spark-sql databricks parquet
1个回答
0
投票

您可以应用一个简单的过滤器,您不必检查

col_1
是否具有字符串值,因为它是 long 类型,所以它唯一可以具有的值是 long 或 null:

from pyspark.sql.functions import col, isnan, isnull
filtered_df = df.filter((~isnull('col_1')) & (~isnan('col_2')) & (col("col_2") != ""))
© www.soinside.com 2019 - 2024. All rights reserved.