3
スパークではLongType
を問題なしでTimestampType
にキャストできます。その後、TimestampType
をDateType
にキャストしても問題はありません。sparkで長時間の鋳造ができないのはなぜですか?
流れ
long -> timestamp -> date
そのことが可能です。ただし、LongType
を直接DateType
にキャストすることはできません。 Soは
long -> date
が許可されていません。
内部的には、TimestampType
は、long
であり、DateType
は、ちょうどint
です。
このように...
long -> long -> int // this is fine
long -> int // this is not fine
それはなぜですか?なぜ火花が出てdate
に直接キャストできるのですか?long
?
スターターのあいまいさ。さらに、内部表現は外部のものを反映しません(タイムスタンプはミリ秒の精度を持ちますが、キャスト中は長さが秒と解釈されます)。 – zero323
なぜ、長いタイムスタンプからのタイムスタンプへのキャストは問題ありませんか?確かに、タイムスタンプはミリ秒の精度を持ち、日付は日精度を持ちます。しかし、長いことはちょうど長いです。ですから、long型がキャストされていても、何らかの明示的な変換が必要です。なぜなら、 'timestamp'が間にあるかどうかにかかわらず、本質的に情報が失われているからです。 – Tim
なぜそれができないのか厳しい理由があるのであれば、私はそれがあるとは思わない。効果的には、タイムスタンプを(ミリ秒)で表現するという慣習が確立されていますが、そのようなことは数日間はありません。あいまいさも問題です - 整数を(ミリ秒)秒または日として解釈する必要がありますか?また、内部では直接使用されないため、内部表現が適切でないことを確認するには、http://stackoverflow.com/q/42628287/1560062をチェックすることもできます。 – zero323