【发布时间】:2020-03-18 16:09:33
【问题描述】:
我正在使用 Scala 中的 Spark 读取 csv 文件。 架构是预定义的,我正在使用它来阅读。 这是示例代码:
// create the schema
val schema= StructType(Array(
StructField("col1", IntegerType,false),
StructField("col2", StringType,false),
StructField("col3", StringType,true)))
// Initialize Spark session
val spark: SparkSession = SparkSession.builder
.appName("Parquet Converter")
.getOrCreate
// Create a data frame from a csv file
val dataFrame: DataFrame =
spark.read.format("csv").schema(schema).option("header", false).load(inputCsvPath)
根据我在使用架构使用 Spark 阅读 cav 时所读到的内容,有 3 个选项:
- 将模式设置为
DROPMALFORMED-->这将删除与架构不匹配的行 - 将模式设置为
PERMISSIVE-->这会将整行设置为空值 - 将模式设置为
FAILFAST-->这将在发现不匹配时引发异常
组合选项的最佳方式是什么?我想要的行为是获取架构中的不匹配,将它们打印为错误并忽略数据框中的行。 基本上,我想要 FAILFAST 和 DROPMALFORMED 的组合。
提前致谢
【问题讨论】:
标签: scala apache-spark