2017-08-29 6 views
0

ここで初心者。私は2つの日付の列をddmmyyyyとmmddyyyyの書式でsparkに格納する方法を見つけようとしています。私はカスタマイズされた方法を行ってきましたが、テーブルあたり1つのフォーマットしかサポートしていないと思います。私はsparkの1つのテーブルに2つ以上の日付形式を格納し指定する方法を見つけませんでした。1つのテーブルに複数の日付書式の列を実装し、SPARKに格納する方法

答えて

0

私は誤解していない午前なら、私はあなたがこれを見ていると信じて:

import pyspark.sql.functions as f 
from pyspark.sql.types import DateType 
from datetime import datetime 

#col1 has date format in DDMMYYY and col2 has date format in MMDDYYYY 
df = sc.parallelize([('30082017','08272017'), ('29082017','08262017')]).toDF(["col1", "col2"]) 

f_mmdd = f.udf(lambda x: datetime.strptime(x, '%m%d%Y'), DateType()) 
f_ddmm = f.udf(lambda x: datetime.strptime(x, '%d%m%Y'), DateType()) 
df = df.withColumn("col1_date_ddmm",f_ddmm(df.col1)).withColumn("col2_date_mmdd",f_mmdd(df.col2)) 
df.show() 

出力は次のとおりです。

+--------+--------+--------------+--------------+ 
| col1| col2|col1_date_ddmm|col2_date_mmdd| 
+--------+--------+--------------+--------------+ 
|30082017|08272017| 2017-08-30| 2017-08-27| 
|29082017|08262017| 2017-08-29| 2017-08-26| 
+--------+--------+--------------+--------------+ 

は、この情報がお役に立てば幸い!

+0

出力の3列目と4列目を確認してください。私はそこにつまずく。私たちがそれを変えることができるかどうかはわかりません。 – bharath

+0

@bhathあなたが本当に「私たちがそれを変えることができるかどうかわからない」とはどういう意味ですか?適切にコードに変換できるようにするには、[あなたの要件を詳述する](https://stackoverflow.com/help/mcve)が必要な場合があります。 – Prem

+0

1番目のタプルを考えてみましょう。 'col1_date_ddmm'の30-08-2017と 'col2_date_mmdd'の08-27-2017を出力として取得します。 – bharath

関連する問題