は、たぶん私は何かを明らかに行方不明ですが、日付比較はここにオフになっているようだ:猫2016-06-29T09:11:26Z
上の日付が考慮される理由は、私は理解していない何datetimeオブジェクトと8601文字列を比較すると間違った結果が得られますが、なぜ許可されますか?
+----------+--------------------+
|customerId| timeStamp|
+----------+--------------------+
| Cat|2016-06-29T09:11:26Z|
| Hat|2016-07-30T09:11:26Z|
| Bat|2016-06-29T23:11:26Z|
+----------+--------------------+
:
from pyspark import SparkContext
from pyspark.sql import SQLContext
import pandas as pd
import datetime
sc = SparkContext()
sqlContext = SQLContext(sc)
action_pandas_df = pd.DataFrame({"customerId": ["Cat", "Hat", "Bat"],
"timeStamp": ["2016-06-29T09:11:26Z",
"2016-07-30T09:11:26Z",
"2016-06-29T23:11:26Z"]})
action_df = sqlContext.createDataFrame(action_pandas_df)
action_df.show()
cut_off = datetime.datetime(2016, 6, 29, 15)
print "\033[0;34m{}\033[0m".format(cut_off.strftime(format='%Y-%m-%dT%H:%M:%SZ'))
new_df = action_df.filter(action_df.timeStamp > cut_off)
new_df.show()
私が手cut_off
より大きく、2016-06-29T15:00:00Z
である。
私はcutoff
の代わりにcut_off.strftime(format='%Y-%m-%dT%H:%M:%SZ')
を使用できることを知っています。予想通りの結果が得られます。サイドノートとして
:
cut_off = datetime.datetime(2016, 7, 10, 15)
期待通りに私のコードは動作します:大きなcut_off
日付の
、私が期待される結果を得ます。
datatime
オブジェクトと8601文字列を比較するのはなぜですか?
私には何が欠けていますか?
編集:
私は編集2 1.5
をスパークを使用しています:
スパーク1.6.1は、同じ動作を提供します。