मुझे स्पार्क जॉब चलाना है और उस स्पार्क जॉब में हमें वर्तमान निर्देशिका को पढ़ने के लिए एक तर्क के रूप में तारीख पास करनी होगी। मैं नौकरी निर्धारित करने के लिए एयरफ्लो का उपयोग कर रहा हूं। नीचे कुछ जानकारी है

आरंभ करने की तिथि

import pendulum
local_tz = pendulum.timezone("Asia/Kolkata")
start_date': datetime(year=2020, month=8, day=3,tzinfo=local_tz)

अनुसूची_अंतराल

schedule_interval='20 0 * * *'

नौकरी में पास होने का मूल्य

{{ (execution_date + macros.timedelta(hours=5,minutes=30) - macros.timedelta(days=1)).strftime("%Y/%m/%d") }}

हमें इस काम को पिछले दिन के लिए आधी रात को चलाना है लेकिन यह अभिव्यक्ति मुझे कल से एक दिन पहले की तारीख दे रही है। मैंने 5:30 जोड़ा क्योंकि हमारा एयरफ्लो UTC समय का उपयोग करता है।

क्या कोई बता सकता है कि संदर्भ के साथ यहाँ क्या हो रहा है?

धन्यवाद

0
Ayush Goyal 18 अगस्त 2020, 15:57
मुझे लगता है कि स्पार्क टाइमज़ोन की परवाह नहीं करता है।
 – 
Lamanus
18 अगस्त 2020, 16:07
यह समय शेड्यूल_इंटरवल के लिए है। अगर मैं समय क्षेत्र नहीं बदल रहा हूं तो नौकरी मेरे स्थानीय मध्यरात्रि के बजाय यूटीसी मध्यरात्रि को ट्रिगर कर रही है और उस समय तक मेरी डेटा निर्देशिका पढ़ने के लिए तैयार नहीं है।
 – 
Ayush Goyal
18 अगस्त 2020, 16:10

1 उत्तर

सबसे बढ़िया उत्तर

निष्पादन तिथि की परिभाषा नीचे दी गई है

The execution time in Airflow is not the actual run time, but rather the start timestamp of its schedule period. For example, the execution time of the first DAG run is 2019–12–05 7:00:00, though it is executed on 2019–12–06.Dec 9, 2019

https://towardsdatascience.com/apache-airflow-tips-and-best-practices-ff64ce92ef8#:~:text=The%20execution%20time %20in%20Airflow,%202019%E2%800%9312%E2%80%9306 पर।

आपको अपने मान में macros.timedelta(days=1)).strftime("%Y/%m/%d") की आवश्यकता नहीं है

2
hopeIsTheonlyWeapon 18 अगस्त 2020, 16:19
जैसा कि आपने उल्लेख किया है, मैंने उपरोक्त मान को हटा दिया है, लेकिन अब भी निष्पादन_डेट 2 दिन पहले की ओर इशारा कर रहा है। इसका मूल्य कैसे रीसेट करें ताकि यह एक दिन पहले इंगित करे ??
 – 
Ayush Goyal
21 अगस्त 2020, 09:29
सर्वर का टाइमज़ोन क्या है जहां एयरफ्लो चलता है (मैं यूटीसी मान रहा हूं)? start_date क्या है। क्या आप कृपया यह start_date=datetime.datetime(2020, 08, 21), शेड्यूल_इंटरवल='0 0 * * *' दे सकते हैं और एक्ज़ीक्यूशन_डेट को हटा सकते हैं
 – 
hopeIsTheonlyWeapon
21 अगस्त 2020, 12:07