无法在 DataFlow Apache Beam 中创建通用日期转换类

Posted

技术标签:

【中文标题】无法在 DataFlow Apache Beam 中创建通用日期转换类【英文标题】:Unable to create a generic date conversion class in DataFlow Apache beam 【发布时间】:2017-08-03 12:44:40 【问题描述】:

我正在尝试使用以下代码在DataFlow 中创建一个用于日期转换的通用类:

class DateConversion

    private static final StringBuffer appendable = null;

    public String dateConversion(String InputdateFormat, String OutputdateFormat, String date1) throws ParseException
    
        DateFormat CurrentDateFormat = new SimpleDateFormat(InputdateFormat);
        DateFormat RequireDateFormat = new SimpleDateFormat(OutputdateFormat);
        Date theDate = CurrentDateFormat.parse(date1);
        return theDate.toString();
    

如果我以 YYYY-MM-DD HH:MM:SS 格式传递日期输入日期格式日期,那么我可以使用 DF 作业在 BigQuery 的 datetime/timestamp 列中成功加载数据。如果我以不同的格式(如 YYMMDD 或 MMDDYY)传递输入日期格式,则程序加载不正确的日期或由于不正确的日期格式而失败。请帮我把上面的代码通用化。

【问题讨论】:

【参考方案1】:

那么问题是您需要支持许多不同的日期格式吗?也许这样的事情会有所帮助?

How to parse dates in multiple formats using SimpleDateFormat

【讨论】:

SimpleDateFormat 不是线程安全的,因此在Embarrassigly parallel 环境中使用它是一个坏主意

以上是关于无法在 DataFlow Apache Beam 中创建通用日期转换类的主要内容,如果未能解决你的问题,请参考以下文章

请求的身份验证范围不足 - GCP 上的 Dataflow/Apache Beam

Dataflow/Apache Beam 在啥阶段确认发布/订阅消息?

Dataflow 大型侧输入中的 Apache Beam

Apache Beam on Dataflow - 加载外部文件

GCP Dataflow + Apache Beam - 缓存问题

Dataflow 中的自定义 Apache Beam Python 版本