Я пытаюсь создать набор данных Spark, а затем использую mapPartitions, пытаюсь получить доступ к каждому из его элементов и сохранить их в переменных. Используя приведенный ниже фрагмент кода для того же самого:
import org.apache.spark.sql.catalyst.encoders.RowEncoder
import org.apache.spark.sql.types._
import org.apache.spark.sql.Row
val df = spark.sql("select col1,col2,col3 from table limit 10")
val schema = StructType(Seq(
StructField("col1", StringType),
StructField("col2", StringType),
StructField("col3", StringType)))
val encoder = RowEncoder(schema)
df.mapPartitions{iterator => { val myList = iterator.toList
myList.map(x=> { val value1 = x.getString(0)
val value2 = x.getString(1)
val value3 = x.getString(2)}).iterator}} (encoder)
Я получаю сообщение об ошибке этого кода:
<console>:39: error: type mismatch;
found : org.apache.spark.sql.catalyst.encoders.ExpressionEncoder[org.apache.spark.sql.Row]
required: org.apache.spark.sql.Encoder[Unit]
val value3 = x.getString(2)}).iterator}} (encoder)
В конечном итоге я нацеливаюсь на сохранение элементов строки в переменных,и выполнить некоторые операции с ними. Не уверен, что мне здесь не хватает. Любая помощь в этом направлении будет принята с благодарностью!