【问题标题】:NIFI Executescript UTC Error for unsupported operand type "+" in java.sql.Timestamp and timedeltajava.sql.Timestamp 和 timedelta 中不支持的操作数类型“+”的 NIFI Executescript UTC 错误
【发布时间】:2020-06-10 09:06:30
【问题描述】:

我正在尝试将一个流文件拆分为多个流文件,基础是在即将到来的流文件中添加一个月的日期。

例如。 {"to":"2019-12-31T00:00:00Z","from":"2019-03-19T15:36:48Z"} 是我在流文件中得到的日期。所以我必须将此单个流文件拆分为 11 个具有日期范围的流文件,例如

{"to":"2019-04-19","from":"2019-03-19"}
{"to":"2019-05-19","from":"2019-04-19"} 
{"to":"2019-06-19","from":"2019-05-19"}
....... and so till
{"to":"2019-12-31","from":"2019-12-19"} .

我一直在尝试使用示例输入将文件拆分为日常流文件:

`

 begin = '2018-02-15'
 end = '2018-04-23'
 dt_start = datetime.strptime(begin, '%Y-%m-%d')
 dt_end = datetime.strptime(end, '%Y-%m-%d')
 one_day = timedelta(days = 1)
 start_dates = [dt_start]
 end_dates = []
 today = dt_start
 while today <= dt_end:
     tomorrow = today + one_day
 print(tomorrow)

`

但我的 Execute 脚本处理器出现错误。 nifi flow screenshot

【问题讨论】:

    标签: datetime apache-nifi jython timedelta execute-script


    【解决方案1】:

    由于您使用的是 Jython,您可能必须将 today 强制转换为某个 Jython/Python 时间变量或调用 today.getTime() 才能对其进行算术运算。

    【讨论】:

    • 我使用了 'today.getTime()' 但它将时间更改为 long ,这再次为 long 和 timedelta 提供了不受支持的操作数
    • 我不是 Python 专家,但我认为您需要将 long 转换为 datetime,以便添加 timedelta,可能使用datetime.datetime.fromtimestamp(myNumber)
    猜你喜欢
    • 1970-01-01
    • 2017-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-27
    • 2014-06-15
    • 2012-11-01
    • 2019-04-08
    相关资源
    最近更新 更多