如何将时间戳转换为 AWS 数据湖 s3 时间戳
How to convert timestamp to AWS data lake s3 timestamp
在我的数据框中,我有时间戳列,其值的格式为:“%Y-%m-%d %H:%M:%m”。我想使用以下方法将此数据框保存到镶木地板:
df.write.partitionBy('p_timestamp').mode("overwrite").parquet('output/proto.parquet')
我想以 AWS 数据湖 s3 时间戳格式保存时间戳分区:“%Y-%m-%dT%H-%M”
我试过了:
df.select(F.col("p_timestamp"), F.date_format(F.col("p_timestamp"), "%Y-%m-%dT%H-%M").alias("date_format")).show()
但是我得到一个错误:
Illegal pattern character 'T'
如有任何提示,我将不胜感激。
我认为您要查找的格式字符串是:
"yyyy-MM-dd'T'HH-mm"
您收到错误是因为 T
没有用 '
引号将其标记为字符串。
如果您需要一些不同的东西,可以咨询 sparks Datetime Patterns for Formatting and Parsing。
小例子:
import pyspark.sql.types as T
schema = T.StructType([T.StructField("Time", T.StringType(), False)])
df = spark.createDataFrame([('1970-09-01 02:02:10',)], schema=schema)
df.withColumn("Convert", F.date_format(F.col("Time"), "yyyy-MM-dd'T'HH-mm")).show()
输出:
+-------------------+----------------+
| Time| Convert|
+-------------------+----------------+
|1970-09-01 02:03:10|1970-09-01T02-03|
+-------------------+----------------+
在我的数据框中,我有时间戳列,其值的格式为:“%Y-%m-%d %H:%M:%m”。我想使用以下方法将此数据框保存到镶木地板:
df.write.partitionBy('p_timestamp').mode("overwrite").parquet('output/proto.parquet')
我想以 AWS 数据湖 s3 时间戳格式保存时间戳分区:“%Y-%m-%dT%H-%M”
我试过了:
df.select(F.col("p_timestamp"), F.date_format(F.col("p_timestamp"), "%Y-%m-%dT%H-%M").alias("date_format")).show()
但是我得到一个错误:
Illegal pattern character 'T'
如有任何提示,我将不胜感激。
我认为您要查找的格式字符串是:
"yyyy-MM-dd'T'HH-mm"
您收到错误是因为 T
没有用 '
引号将其标记为字符串。
如果您需要一些不同的东西,可以咨询 sparks Datetime Patterns for Formatting and Parsing。
小例子:
import pyspark.sql.types as T
schema = T.StructType([T.StructField("Time", T.StringType(), False)])
df = spark.createDataFrame([('1970-09-01 02:02:10',)], schema=schema)
df.withColumn("Convert", F.date_format(F.col("Time"), "yyyy-MM-dd'T'HH-mm")).show()
输出:
+-------------------+----------------+
| Time| Convert|
+-------------------+----------------+
|1970-09-01 02:03:10|1970-09-01T02-03|
+-------------------+----------------+