Python Spark-from_avro函数返回空值

Python Spark-from_avro函数返回空值,python,scala,apache-spark,pyspark,pyspark-dataframes,Python,Scala,Apache Spark,Pyspark,Pyspark Dataframes,我正在尝试读取names.json文件的内容。以下是内容。使用to_avro方法将其编码为avro格式,并使用from_avro方法将其解码回正常文本 {"name":"alex"} {"name":"bart"} {"name":"tamir"} {"name":"brandon"} {"name":"zach"} 当我解码avro数据时,产生的数据帧会带来空值,而不是实际数据。下面是代码 val jsonData = spark.read.json("pathto/names.json")

我正在尝试读取names.json文件的内容。以下是内容。使用
to_avro
方法将其编码为avro格式,并使用
from_avro
方法将其解码回正常文本

{"name":"alex"}
{"name":"bart"}
{"name":"tamir"}
{"name":"brandon"}
{"name":"zach"}
当我解码avro数据时,产生的数据帧会带来空值,而不是实际数据。下面是代码

val jsonData = spark.read.json("pathto/names.json")

jsonData: org.apache.spark.sql.DataFrame = [rawdata: string]

jsonData.show(truncate=false)

+----------------------------+
|name                        |
+----------------------------+
|alex                        |
|bart                        |
|tamir                       |
|brandon                     |
|zach                        |
+----------------------------+

val res = jsonData.select(to_avro($"name") as 'value)

val schema_struct="""
{"namespace": "com.names.data",
 "type": "record",
 "fields": [
     {"name": "name", "type": "string"}
  ]
}
"""

val ans = res.select(from_avro('value, schema_struct) as 'user)

ans.show()

Output result
+----+
|name|
+----+
|  []|
|  []|
|  []|
|  []|
|  []|
|  []|
|  []|
+----+

我不确定为什么要为null值赋值,尽管我有正确的数据类型。我在这里做错什么了吗?我尝试了使用pyspark的等效代码,得到了相同的结果。非常感谢您的帮助。

我也有同样的问题。你还记得是什么问题吗?我解决不了。我没有使用spark提供的函数,而是使用avro库构建了自己的编码器和解码器函数。这解决了问题,我也有同样的问题。你还记得是什么问题吗?我解决不了。我没有使用spark提供的函数,而是使用avro库构建了自己的编码器和解码器函数。这就解决了问题