我对pyspark完全陌生,我有一个输入文件(用'|'分隔),其值类似于
**YearMonth** language Rate
2018-01 en 0.093
2018-02 en 0.084
2018-03 en 0.088
...
2018-12 en 0.079
2019-01 en 0.088
2018-01 fr 0.094
2018-02 fr 0.078
2018-03 fr 0.087
...
2018-12 fr 0.084
2019-01 fr 0.079
我有一个json在此输入数据帧上应用架构,但是当我使用下面的JSON将数据类型指定为所有String时:
|2013-12-20 00:00:00|19:00:00|
|2013-12-21 00:00:00|18:00:00|
我可以将此模式(两个字符串)应用于我的数据框,并读取它,效果很好。 但是当我使用'timestamp'作为json时,它在数据帧上应用了架构,但是当我读到它低于错误时:
{
"type" : "struct",
"fields" : [ {
"name" : "date_generated",
"type" : "string",
"nullable" : true,
"metadata" : {}
}, {
"name" : "time_generated",
"type" : "string",
"nullable" : true,
"metadata" : {}
}
]
}
下面是pyspark代码:
field date_arrested: TimestampType can not accept object '2013-12-20 00:00:00' in type <class 'str'>
输入新的JSON:
inputDf = spark.read.option("delimiter", "|").csv(inout_file_path)
with open('schema.json', 'r') as S: # path to schema file
saved_schema = json.load(S)
targetDf = spark.createDataFrame(inputDf.rdd, StructType.fromJson(saved_schema))
targetDf.printSchema()
感谢帮助。