Python Spark-from_avro函数返回空值
我正在尝试读取names.json文件的内容。以下是内容。使用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")
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库构建了自己的编码器和解码器函数。这就解决了问题