繁体   English   中英

将数据框的模式与其他数据框的模式进行比较

[英]Compare schema of dataframe with schema of other dataframe

我有从 hdfs 路径读取的两个数据集的模式,它定义如下:

val df = spark.read.parquet("/path")

df.printSchema()

root
 |-- name: string (nullable = true)
 |-- id: integer (nullable = true)
 |-- dept: integer (nullable = true)

您可以通过以下方式创建 StructType 的实例:


    val schema = StructType(
        Seq(
            StructField("name", StringType(), true),
            StructField("id", IntegerType(), true)
        ))

只需读取文件并根据文件中的数据创建架构。

Spark 模式示例
火花类型的Scaladoc
Spark 类型文档

由于您的架构文件看起来像一个 CSV :

// Read and convert into a MAP  
val csvSchemaDf = spark.read.csv("/testschemafile")
val schemaMap = csvSchema.rdd.map(x => (x(0).toString.trim,x(1).toString.trim)).collectAsMap

var isSchemaMatching = true

//Iterate through the schema fields of your df and compare 
for( field <- df.schema.toList ){
  if( !(schemaMap.contains(field.name) && 
        field.dataType.toString.equals(schemaMap.get(field.name).get))){
      //Mismatch 
      isSchemaMatching = false;
  }
}

使用isSchemaMatching进行进一步的逻辑

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM