2017-02-15 93 views
1

これはかなり基本的です。私は日付列を含むSparkデータフレームを持っているので、その日付以降の日数で新しい列を追加したい。 Googleのフーは私に失敗しています。pysparkの2つの日付間の時間を計算します

は、ここで私が試したものです:

from pyspark.sql.types import * 
import datetime 
today = datetime.date.today() 

schema = StructType([StructField("foo", DateType(), True)]) 
l = [(datetime.date(2016,12,1),)] 
df = sqlContext.createDataFrame(l, schema) 
df = df.withColumn('daysBetween',today - df.foo) 
df.show() 

それはエラーで失敗します。

u"cannot resolve '(17212 - foo)' due to data type mismatch: '(17212 - foo)' requires (numeric or calendarinterval) type, not date;"

私の周りいじって試してみたが、どこにも得ていません。これはあまりにも難しいとは思いません。誰も助けることができますか?

答えて

3

OK、あなたは単に次の操作を行うことができ

from pyspark.sql.types import * 
import pyspark.sql.functions as funcs 
import datetime 
today = datetime.date(2017,2,15) 

schema = StructType([StructField("foo", DateType(), True)]) 
l = [(datetime.date(2017,2,14),)] 
df = sqlContext.createDataFrame(l, schema) 
df = df.withColumn('daysBetween',funcs.datediff(funcs.lit(today), df.foo)) 
df.collect() 

戻り[Row(foo=datetime.date(2017, 2, 14), daysBetween=1)]

2

それを考え出し:

import pyspark.sql.functions as F 

df = df.withColumn('daysSince', F.datediff(F.current_date(), df.foo)) 
+0

だから、他の人が知ることができます。違いは、HTTPS日である://スパーク.apache.org/docs/2.1.0/api/python/pyspark.sql.html#pyspark.sql.functions.datediff – gabra

関連する問題