我正在尝试根据timestamp列对spark job的delta输出进行分区。我的框架有2列:
userid, last_login
1234, "2023-11-25T05:22:13.433Z"
5678, "2023-11-26T05:22:12.123Z"
字符串
我不想在输出增量和最后一步中添加额外的列,而我正在使用write &保存编写输出:
dataframe.wite.format("delta").partitionBy("year", "month", "day").save("my_location")
型
有没有什么方法可以让我在运行中创建yyyy,mm,dd?我使用spark scala来完成这项工作。
我尝试使用相同的代码rame.wite.format(“delta”).partitionBy(“year”,“month”,“day”).保存(“my_location”),但它对我不起作用,并说列未找到错误。
1条答案
按热度按时间i2byvkas1#
您需要指定年、月和日。
字符串
它不能比这更“在飞行中”。
我怀疑你可能关心的是这些列是否会被保存到parquet文件中,浪费空间。不,它们不会。输出将类似于这样:
型
这些parquet文件将只包含
userid
和last_login
列。分区值存储在目录结构中,当阅读数据时,它们将简单地从路径重建。