1
我有一個數據幀有多個列,其中兩個類型爲pyspark.sql.TimestampType
。我想過濾這個數據幀到這兩列之間的時間差小於一個小時的行。基於兩列之間的時間差異過濾pyspark數據幀
我目前正在試圖做到這一點,像這樣: examples = data.filter((data.tstamp - data.date) < datetime.timedelta(hours=1))
但這種失敗,出現以下錯誤信息:
org.apache.spark.sql.AnalysisException: cannot resolve '(`tstamp` - `date`)' due to data type mismatch: '(`tstamp` - `date`)' requires (numeric or calendarinterval) type, not timestamp
什麼是實現此過濾器的正確的方法?
的列是不是不同的類型,而是兩者都是'型pyspark.sql.TimestampType' – vaerek
另外,這些都是dateti我的對象,所以'unix_timestamp'函數將不起作用,因爲它操作字符串輸入。我想我可以將它們從日期時間轉換爲字符串,然後通過'unix_timestamp'運行它們。我想知道是否有更直接的方法。 – vaerek
在pyspark中,我們無法訪問python中的所有日期時間函數,因此時間差異的唯一其他函數可以在幾天內處理。所以,除非你編寫的UDF效率比直接的pyspark解決方案低,否則你不得不通過將它們轉換爲int來使用時間戳差異。 – MaFF