と の 2 つのフィールドを持つ寄木細工のファイルにデータがありobject_id: String
ますalpha: Map<>
。
これは sparkSQL のデータ フレームに読み込まれ、スキーマは次のようになります。
scala> alphaDF.printSchema()
root
|-- object_id: string (nullable = true)
|-- ALPHA: map (nullable = true)
| |-- key: string
| |-- value: struct (valueContainsNull = true)
私はSpark 2.0を使用しており、次のように列にマップobject_id
のキーを追加する必要がある新しいデータフレームを作成しようとしていますALPHA
object_id, key1, key2, key2, ...
私は最初に、少なくとも次のようにマップにアクセスできるかどうかを確認しようとしていました:
scala> alphaDF.map(a => a(0)).collect()
<console>:32: error: Unable to find encoder for type stored in a Dataset.
Primitive types (Int, String, etc) and Product types (case classes) are
supported by importing spark.implicits._ Support for serializing other
types will be added in future releases.
alphaDF.map(a => a(0)).collect()
残念ながら、マップのキーにアクセスする方法を理解できないようです。
object_id
プラス マップ キーを列名として取得し、値を新しいデータフレームのそれぞれの値として取得する方法を教えてください。