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 == StructType
やcase StructType
を書く場合
ありがとう@Alexey 'case st:StructType'とのマッチングヘルプ – sachinjain024