2016-09-19 12 views
0

DataFrameの列がStructTypeであるかどうかを知りたい。私はDataFrameのスキーマを持っています。 a1はStructType(StructField(name,StringType,true), StructField(age,IntegerType,true), StructField(gender,StringType,true))DataFrameの列がStructTypeであるかどうかを確認する方法

a1がStructTypeであればどのように私は知っているので

val personStructType = 
    StructType(
    StructField("name", StringType, nullable = true, metadata = new MetadataBuilder().putBoolean("isPrimary", false).build) :: 
    StructField("age", IntegerType, nullable = true, metadata = new MetadataBuilder().putBoolean("isPrimary", false).build) :: 
    StructField("gender", StringType, nullable = true, metadata = new MetadataBuilder().putBoolean("isPrimary", false).build) :: 
    Nil 
) 

val idStructType = 
    StructType(
    StructField("domain", StringType, nullable = true, metadata = new MetadataBuilder().putBoolean("isPrimary", false).build) :: 
    StructField("id", StringType, nullable = true, metadata = new MetadataBuilder().putBoolean("isPrimary", false).build) :: 
    Nil 
) 

val schema = 
    StructType(
    StructField("a", StringType, nullable = true, new MetadataBuilder().putBoolean("isPrimary", true).build) :: 
    StructField("person", personStructType, nullable = true, metadata = new MetadataBuilder().putBoolean("isPrimary", false).build) :: 
    StructField("identifier", idStructType, nullable = true, metadata = new MetadataBuilder().putBoolean("isPrimary", false).build) :: 
    Nil 
) 

val a0 = schema.apply(0).dataType 
a0 == StringType // Result is true 

val a1 = schema.apply(1).dataType 
a1 == StructType // Result is false 

:私はたとえば次のコード

df.schema.apply(1) match { 
    case StringType => // Do Something 
    case ? => // How to check if 1st column is of StructType 
} 

を使用しようとしています、このケースを考えてみましょうか?あなたがa1 == StructTypecase StructTypeを書く場合

答えて

1

、あなたはタイプStructTypeのコンパニオンオブジェクトであるStructType呼ば、と比較されています。

代わりにタイプ照合する必要があります:あなたはcase x: Stringなくcase Stringを書くだけで同じように、case struct: StructType(またはcase StructType(fields))。

+0

ありがとう@Alexey 'case st:StructType'とのマッチングヘルプ – sachinjain024

関連する問題