我使用 to_avro 将数据帧字段转换为 avro 字段结构,然后使用 from_avro 返回,如下所示。最终我想将 avro 有效负载流式传输到 kafka 写入/读取。当我尝试通过执行 df.show() 打印最终重新转换的数据帧时,出现 java.lang.ArrayIndexOutOfBoundsException 错误。df.printSchema 显示模式正确。
我正在使用 Spark 2.4.0 和 scala 2.11
我究竟做错了什么。字段中的空值是否会导致此问题?如果是这样,解决办法是什么?
这是代码
import org.apache.spark.sql.{ Row, SparkSession, Column, functions }
import org.apache.spark.sql._
import org.apache.spark.sql.functions._
import org.apache.spark.sql.types._
import org.apache.spark.sql.avro._
import java.nio.file.{Files, Paths}
val spark = SparkSession
.builder()
.appName("Spark SQL basic example")
.master("local[*]")
.getOrCreate()
spark.sparkContext.setLogLevel("WARN")
import spark.implicits._
val jsonDS = spark.createDataset(
"""{ "name": "Alyssa", "favorite_color": null, "favorite_numbers": [3, 9, 15, 20] } """ ::
"""{ "name": "Ben", "favorite_color": "red", "favorite_numbers": [] …Run Code Online (Sandbox Code Playgroud)