私はyyyyMMddフォーマットをyyyy/MM/ddフォーマットに変換しようとしています。フォーマットが正しくありません: "19690321"が短すぎます
コード:
STOCK_A = LOAD '/user/root/xxxx/*' USING PigStorage('|');
data = FILTER STOCK_A BY ($1 matches '.*ID.*');
MSH_DATA = FOREACH data GENERATE ToDate($8,'yyyy/MM/dd','UTC') AS dob;
私はエラーの下に取得していた結果をダンプしようとしています。
エラーorg.apache.pig.tools.pigstats.SimplePigStats - ERROR 0: 例外実行中[POUserFunc(名称: POUserFunc(org.apache.pig.builtin.ToDate3ARGS)[日時] - scope- 209 演算子キー:スコープ-209)子供: java.lang.IllegalArgumentExceptionが::[]]でヌル無効なフォーマット: "19690321" も 短いです
サンプル:
[email protected]#PDULD21F|ID|1|483|1020783||[email protected]#PDULD||19690321|F|
$ 8が有効です。問題が発生する理由を特定できません。どんな助けでも本当に感謝しています。
あなたが使用
をTODATEするフィールドを渡す前に
chararray
に変換する必要がありますが、私は日付がYYYYMMDDからYYYY/MM/DD形式であることにしたいです。どうすればそれを達成できますか? – Ironmantodateはあなたの文字列を日付に変換することです。豚はフォーマットが日付であることを知っています。年齢を計算し、2つの日付の間で行を選択することができます。日付を印刷したい場合は、ToStringで文字列に変換する必要があります。たとえば、 "ToString(yourDate、 'yyyy/MM/dd')"を使用することができます。または「ToString(yourDate、 'ww-yyyy')」に週番号を設定することもできます。 – wargre