【发布时间】:2020-10-01 09:57:40
【问题描述】:
我有一个 python 应用程序,它可以将文档解析为字典格式 (JSON),其中包含时间信息等。该文档有一个字符串,此时格式为 '%Y-%m-%d%H.%M.%S',我使用 strptime 函数将其转换为日期时间对象。
然后将所有信息转换为 PySpark DataFrame,以便将其保存为 MongoDb 集合。
问题是,当我将字典转换为 DataFrame 时,我会丢失小时、分钟和秒信息,最终只将“2020-05-29 00:00:00.000z”保存到 Mongo 集合中,但我需要hh,mm 和 ss 以便稍后过滤。可能会发生什么?
这就是我正在做的:
日期:
date = datetime.datetime.strptime(
date.decode('utf-8'), '%Y-%m-%d%H.%M.%S')
每个字典项都是这样的,并存储在一个称为记录的列表中:
{'name': 'Contrato', 'fecha': date, 'origin': 'input'}
我为 Dataframe 创建的架构:
schema = StructType([
StructField('name', StringType(), True),
StructField('fecha', DateType(), True),
StructField('origin', BooleanType(), True)
])
然后我打电话:
spark.createDataFrame(records, schema)
当我打印 DF 时,我得到了这个:
当我将它加载到 Mongo 时,它总是显示没有小时、分钟或秒:
提前致谢!
【问题讨论】:
-
您能否添加一些初始日期字符串的示例?顺便说一句,DateType() 只保存日期。
-
@cronoik 通过将其更改为 TimestampType() 来修复它。谢谢!
标签: python json mongodb dataframe pyspark