spark pyspark structtype structfield json到avro

kcugc4gi  于 2021-05-17  发布在  Spark
关注(0)|答案(0)|浏览(260)

我正在尝试读取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}}

任何建议都将不胜感激!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题