0
再帰関数を構築する。Spark:spark arrayTypeを式として反復する方法
def loop(path: String, dt: DataType, acc:Seq[String]): Seq[String] = {
dt match {
case s: ArrayType =>
s.fields.flatMap(f => loop(path + "." + f.name, f.dataType, acc))
case s: StructType =>
s.fields.flatMap(f => loop(path + "." + f.name, f.dataType, acc))
case other =>
acc:+ path
}
私はというエラーを持っている「エラー:値フィールドがorg.apache.spark.sql.types.ArrayTypeのメンバーではありません」。ですから、arrayTypeの各要素を反復処理し、文字列の平坦なシーケンスを返すにはどうすればよいですか?
あなたがいないを使用しています。個々の値はスキーマに反映されません。 – zero323
それ以外は私のスキーマは、structTypeの要素を含むように見えます。ループを解析して文字列の平坦なシーケンスを返すようにしたいと思います。 – MichM
それはありません。 'ArrayType'のスキーマに反映されるのは、要素の型だけです。配列の型にアクセスしますか?もしそうなら 'f.dataType'を使います。 – zero323