如何在不对时间戳列使用INT96格式的情况下将Spark数据帧保存到拼图? [英] How to save spark dataframe to parquet without using INT96 format for timestamp columns?

查看:131
本文介绍了如何在不对时间戳列使用INT96格式的情况下将Spark数据帧保存到拼图?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个Spark DataFrame,我想将其另存为PARQUE,然后使用PARQUE-Avro库加载它。

我的数据帧中有一个时间戳列,它在拼图中被转换为INT96时间戳列。但是拼花-Avrodoes not support INT96格式化和抛出。

有没有办法避免呢?在Avro支持的内容中将时间戳写入拼图时,是否可以更改Spark使用的格式?

我当前使用

date_frame.write.parquet("path")

推荐答案

阅读Spark代码时发现spark.sql.parquet.outputTimestampTypeproperty

spark.sql.parquet.outputTimestampType:
设置当Spark将数据写入拼图文件时要使用的拼图时间戳类型。
INT96是拼图中非标准但常用的时间戳类型。
TIMESTAMP_MICROS是PARQUET中的标准TIMESTAMP类型,它存储从Unix纪元开始的微秒数。
TIMESTAMP_MILIS也是标准的,但精度为毫秒,这意味着Spark必须截断其时间戳值的微秒部分。

这样我就可以执行以下操作:

spark.conf.set("spark.sql.parquet.outputTimestampType", "TIMESTAMP_MICROS")
data_frame.write.parquet("path")

这篇关于如何在不对时间戳列使用INT96格式的情况下将Spark数据帧保存到拼图?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆