この形式のSparkDFの文字列である「日付」列があります1/1/200012:53 AM、1/1/2000 2:53 AM、1/1/2000 5:53 AM、.. 。この列をUnixタイムスタンプに変換する新しい列を作成しようとしていますが、出力としてnullでいっぱいの列を取得しています。この列を作成するために使用している行は次のとおりです。
val New_DF = Old_DF.withColumn( "Timestamp"、unix_timestamp($ "Date"、 "MM / dd / yyyy hh:mm:ss a"))
別々の月、日、年、および時間の列を連結して日付列を作成しましたが、月と日の列には、月と日の01ではなく1の形式で入力データがあります。これがnull列が返される理由ですか、それとも別の理由がありますか?これが理由である場合、日と月の列を1から01、2から02、...に修正するにはどうすればよいですか?
タイムスタンプを扱うのはこれが初めてで、Scalaは初めてなので、助けてくれてとても感謝しています。
あなたは、1つの文字を指定することができM
、d
そしてh
だけ。Sparkは、フィールドに含まれる最小桁数としてそれを使用します。タイムスタンプ文字列には秒がないため、を含めないでください:ss
。
val New_DF = Old_DF.withColumn("Timestamp", unix_timestamp($"Date", "M/d/yyyy h:mm a"))
日時フォーマットの詳細については、https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.htmlを参照してください。特に:
数値:フォーマットの場合、パターン文字の数は最小桁数であり、短い数値はこの量までゼロで埋められます。解析の場合、2つの隣接するフィールドを分離する必要がない限り、パターン文字の数は無視されます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加