スキーマファイルが有効な形式のcsvであると仮定して、文字列分割とパターンマッチングを使用できます。あなたはすでにスキーマは、単一のコンマ区切りの文字列として読み込まれていると仮定すると、次のように動作します:
def toSchema(str: String) = {
val structFields = str.split(",").map{ s =>
val split = s.split("\\|")
val name: String = split.head
val typeStr = split.tail.head
val varCharPattern = "varchar[0-9]+".r
val datePattern = "date".r
val numPattern = "number".r
val t = typeStr.toLowerCase match{
case varCharPattern() => StringType
case datePattern() => TimestampType
case numPattern() => IntegerType
case _ => throw new Exception("unknown type string")
}
StructField(name, t)
}
StructType(structFields)
}
あなただけのパターンマッチングステートメントに新しいケースを追加することにより、容易に十分なより多くの種類を追加することができます。
あなたはヘッダー列などの何らかの種類のコードを投稿していますか?それが何であるかを明確にし、正確なフォーマットを明確にしていない場合は明記してください。 –