मैं स्पार्क क्वेरी चलाने की कोशिश कर रहा हूं जहां मैं पैरामीटर फ़ाइल में मानों के आधार पर स्रोत तालिका से क्यूरेटेड टेबल बना रहा हूं।

properties_file.properties में नीचे मुख्य मान शामिल हैं:

substatus,allow,deny

स्पार्कक्वेरी is

//Code to load property file in parseConf

spark.sql(s"""insert into curated.table from source.table where 
substatus='${parseConf.substatus}'""")

ऊपर substatus में सिंगल वैल्यू के साथ काम करता है। लेकिन क्या कोई मेरी मदद कर सकता है अगर मुझे substatus में ${parseConf.substatus} का उपयोग करने की आवश्यकता है, तो नीचे दिए गए परम से कई मानों के लिए।

spark.sql(s"""insert into curated.table from source.table where substatus in '${parseConf.substatus}'""")
0
Vikhyat Srivastava 30 पद 2020, 12:46

2 जवाब

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

इक्वाल्टो ऑपरेटर को उम्मीद है कि पैरामीटर फ़ाइल से मान को सीधे पढ़ने के अलावा 1 मान पास किया जाएगा जो एक स्ट्रिंग को पास करता है। आपको मानों को तोड़ना होगा और फिर बराबर (=) के स्थान पर IN क्लॉज का उपयोग करना होगा।

0
Dharman 15 जिंदा 2021, 09:35

मेरी समस्या को हल करने के लिए, मैंने अपनी संपत्ति फ़ाइल को इस प्रकार अपडेट किया:
substatus,'allow'-'deny'
फिर स्केल कोड में, मैंने तर्क के नीचे लागू किया:
val subStatus=(parseConf.substatus).replace('-',',')
spark.sql(s"""insert into curated.table from source.table where substatus in ('${subStatus}')""")
उपरोक्त रणनीति ने आईएन क्लॉज के कई मापदंडों को स्ट्रिंग में मूल्यों को तोड़ने में मदद की।

1
Vikhyat Srivastava 15 जिंदा 2021, 09:25