我需要从csv文件中读取数据并根据显式模式对其进行验证,如果模式验证失败,则抛出错误 . 为此,我做了以下工作:1)定义了架构

public static StructField[] schema ={
                new StructField("name", DataTypes.StringType, false, Metadata.empty()),
                new StructField("type_id",DataTypes.StringType, false, Metadata.empty())
               };

2)根据模式验证数据

StructType schemaType =new StructType(Myschema.schema);
    Dataset<Row> df =session.read().schema(schemaType).option("header", "true").csv(csvInput);
    df.printSchema();

我的问题是

  • 1)如果任何行未通过验证,如何抛出错误?

  • 2)虽然我已经提到过fileds不可为空
    结构域定义,当我打印模式时,它将字段打印为可空,为什么会发生这种情况?

  • 3)在StructField的构造函数中使用元数据参数有什么用处?