apache-pig - 为什么 ToDate 不适用于字符串格式
问题描述
假设我有一个名为 DAT_015_X 的字符串列,格式为“yyyyMMdd”。
我想按日期“20190101”创建一个过滤器。
我只是加载我的数据:
CRE_22002 = LOAD '$input' USING PigStorage(';') AS (GM_COMPTEUR:chararray,CIA_CD_CRV_CIA:chararray,CIA_DA_EM_CRV:chararray,CIA_CD_CTRL_BLCE:chararray,CIA_IDC_EXTR_RDJ:chararray,CIA_VLR_IDT_CRV_LOQ:chararray,CIA_VLR_REF_CRV:chararray,CIA_NO_SEQ_CRV:chararray,CIA_VLR_LG_ZON_RTG:chararray,CIA_HEU_CIA:chararray,CIA_TM_STP_CRE:chararray,CIA_CD_SI:chararray,CIA_VLR_1:chararray,CIA_DA_ARR_FIC:chararray,CIA_TY_ENR:chararray,CIA_CD_BTE:chararray,CIA_CD_PER:chararray,CIA_CD_EFS:chararray,CIA_CD_ETA_VAL_CRV:chararray,CIA_CD_EVE_CPR:chararray,CIA_CD_APLI_TDU:chararray,CIA_CD_STE_RTG:chararray,CIA_DA_TT_RTG:chararray,CIA_NO_ENR_RTG:chararray,CIA_DA_VAL_EVE:chararray,PSE_001:chararray,STR_002:chararray,STR_003:chararray,CPR_006_VLR:chararray,CPR_006_DCM:chararray,CPR_006_CD_DVS:chararray,CPR_008_VLR:chararray,CPR_008_DCM:chararray,CPR_008_CD_DVS:chararray,CPR_009_VLR:chararray,CPR_009_DCM:chararray,CPR_009_CD_DVS:chararray,CPR_059_VLR:chararray,CPR_059_DCM:chararray,CPR_059_CD_DVS:chararray,CPR_060_VLR:chararray,CPR_060_DCM:chararray,CPR_060_CD_DVS:chararray,RUB_205:chararray,RUB_216:int,DAT_015_X:chararray,NB_005_VLR:chararray,NB_005_DCM:chararray,NB_007_VLR:chararray,NB_007_DCM:chararray,NB_012_VLR:chararray,NB_012_DCM:chararray,EUR_061_VLR:chararray,EUR_061_DCM:chararray,EUR_061_CD_DVS:chararray,EUR_062_VLR:chararray,EUR_062_DCM:chararray,EUR_062_CD_DVS:chararray);
我转储它并且数据存在并且没有问题。没有空间或任何问题。
为了得到我写的过滤器:
CRE_22002_DATA_FILTER = FILTER CRE_22002 BY (ToDate($45,'yyyyMMdd')> ToDate('20190101','yyyyMMdd'));
我收到此错误:
无法将 org.apache.pig.builtin.ToDate 的匹配函数推断为多个匹配或都不匹配。请使用显式演员表。
编辑 @VK_217 说,我用 $45 而不是 $44 因为这是正确的位置。
(DAT_015_X)
(99991231)
(20200605)
(20190605)
(20200605)
(20200305)
(99991231)
(99991231)
(99991231)
(99991231)
(99991231)
(99991231)
(20200110)
(99991231)
(99991231)
(99991231)
(20190501)
(99991231)
(20190905)
(99991231)
(99991231)
(99991231)
(99991231)
(99991231)
(99991231)
(99991231)
(20190605)
(99991231)
(99991231)
(20190905)
(99991231)
(20190915)
(20190805)
(99991231)
(99991231)
(99991231)
(99991231)
(99991231)
(99991231)
(20200110)
(99991231)
(20190705)
但总是有一个错误:
[]]:java.lang.IllegalArgumentException:无效格式:“DAT_015_X”
Failed Jobs:
JobId Alias Feature Message Outputs
job_1549794175705_3562351 CRE_22002,CRE_22002_DATA_FILTER,LIMITED_DATA Message: Job failed!
Input(s):
Failed to read data from "/hdfs/data/adhoc/PR/02/RDO0/BB0/MGM22002-2019-09-04.csv"
Output(s):
请问你怎么解释?
解决方案
推荐阅读
- javascript - 取消选中所有内容时显示消息,并在每次标记每个检查时显示其他消息
- firebase - 为其他用户创建 Firebase 身份验证帐户
- javascript - 是否可以从模拟模块本身中要求模拟 Jest 模块的原始/实际实现?
- git - 带有 git pre-commit 钩子的 CalledProcessError
- pandas - 在不同行的一列中添加所有文本
- java - 如何仅在 Spring MVC 中填充内容时进行验证?
- c++ - 如何初始化一个数组?
- flutter - 在隔离中。流已被收听
- java - 为什么我必须强制转换 Constructor.newInstance 的返回值?
- python - 如何使用 tkinter 和 PIL 将任何图像适合我的窗口?