我正在尝试读取json文件并将其写入avro。我使用pyspark structtype&structfield类以编程方式指定Dataframe的模式。我正在尝试读取json文件并将其写入avro格式,logicaltype设置为“timestamp micros”。
使用structfield正确设置了架构,但输入数据在再次尝试转换为epoch格式时已损坏。其目的只是读取json并将其写入json,而不需要在设置了logicaltype的日期字段中进行任何转换。
我的json示例(文件名:test.json)
[{
"name": "test1",
"Date_of_Sale": 1528955439000
}]
>>> myschema = StructType([StructField("Date_of_Sale", TimestampType(), True)])
>>> df_bi = spark.read.json('/tmp/test.json', myschema, multiLine=True).na.drop("all")
>>> df_bi.show()
+--------------------+
| Date_of_Sale. |
+--------------------+
|50420-09-01 14:10...|
+--------------------+
df_bi.write.format("avro").save("test")
Schema from Write:
{
"type" : "record",
"name" : "topLevelRecord",
"fields" : [ {
"name" : "Date_of_Sale",
"type" : [ {
"type" : "long",
"logicalType" : "timestamp-micros"
}, "null" ]
} ]
}
Data from Avro as json ouput:
{"Date_of_Sale":{"long":1528955439000000000}}
任何建议都将不胜感激!
暂无答案!
目前还没有任何答案,快来回答吧!