在pyspark中将字符串转换为时间戳

时间:2019-11-13 10:12:48

标签: python json pyspark timestamp

我对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()

感谢帮助。

0 个答案:

没有答案