2013-10-28 6 views
6

मैं एसक्यूओपीपी का उपयोग कर एचडीएफएस से एमएस-एसक्यूएल में जानकारी निर्यात कर रहा हूं। मैं OOZIE के माध्यम से SQOOP चला रहा हूँ। अभी मैं ओडीआईई वर्कफ़्लो में जेडीबीसी कनेक्शन के लिए यूआईडी को हार्ड-कोड किया है। एक बार जब मैं प्रोड पर स्विच करता हूं तो मैं ऐसा करने में सक्षम नहीं होगा। इस तरह की स्थिति में प्रमाणीकरण जानकारी पास करने का सबसे अच्छा तरीका क्या है?एमएस-एसक्यूएल से कनेक्ट करने के लिए मैं ओओजीआईई के माध्यम से एसक्यूओपीपी को पासवर्ड कैसे प्रदान कर सकता हूं?

<sqoop xmlns="uri:oozie:sqoop-action:0.2"> 
      <job-tracker>${jobTracker}</job-tracker> 
      <name-node>${nameNode}</name-node> 
      <arg>export</arg> 
      <arg>--connect</arg> 
      <arg>jdbc:sqlserver://$sqlServerIP:1433</arg> 
      <arg>--table</arg> 
      <arg>tableName</arg> 
      <arg>--export-dir</arg> 
      <arg>/user/sqoop/file</arg> 
      <arg>--username</arg> 
      <arg>me</arg> 
      <arg>--password</arg> 
      <arg>password</arg> 
</sqoop> 

मैं उन्हें $ userName, $ पासवर्ड जैसे पैरामीटर के रूप में पास कर सकता हूं। लेकिन असली यूआईडी/पीडब्ल्यूडी अभी भी ओज़ी वेब कंसोल में दिखाएगा।

अद्यतन

मैं दो तरीकों की कोशिश की है (के रूप में bellow सुझाव दिया) यह करने के लिए ... विम में मैं pwd बनाया बस पासवर्ड (कोई सफेद रिक्त स्थान या कुछ और) है। इस पीडब्ल्यूडी को बुलाया

1) मैंने फ़ाइल सिस्टम का उपयोग करने का प्रयास किया। हालांकि मुझे एक आईओएक्सप्शन मिला है कि फाइल मौजूद नहीं है। कोड को देखने के बाद, ऐसा लगता है कि sqoop fs तक पहुंचने के लिए पास किए गए conf का उपयोग करता है। तो मुझे लगता है कि ओजी के माध्यम से भागने पर यह केवल एचडीएफएस तक पहुंच जाएगा।

2) मैंने पासवर्ड फ़ाइल को hdfs पर एक यादृच्छिक स्थान में लोड किया।/उपयोगकर्ता/मेरा नाम/pwd (pwd फ़ाइल है)। अब यह फ़ाइल तक पहुंच सकता है (क्योंकि मुझे आईओएक्सप्शन नहीं मिला है)। हालांकि यह SQLServer से कनेक्ट करने में विफल रहता है। मुझे यकीन नहीं है कि इसे काम करने के लिए मुझे क्या करना है?

अद्यतन 2 मैं जैसे पासवर्ड फ़ाइल बनाने गया था ताकि: echo "pwd" > my.password इस फ़ाइल के लिए एक EOL my.password मैं echo -n "pwd" > my.password को बदल दिया है और अब यह काम करता है कहते हैं।

+0

बस यह ध्यान रखना चाहता था कि (कम से कम CentOS 7) 'echo -n" pw_d "> my.password'' '_'' प्रतीक मौजूद है, यदि यह मौजूद है, तो केवल' 'pwd'' लिखना फ़ाइल। तो यानी 'vi'' बेहतर विकल्प हो सकता है – Nutle

उत्तर

4

मुझे लगता है कि आप --password-file तर्क निर्दिष्ट करने का लाभ उठा सकते हैं, ताकि ओज़ी पासवर्ड कभी नहीं देख पाए। अधिक जानकारी के लिए Sqoop User Guide पर एक नज़र डालें।

+0

इसके लिए धन्यवाद। कोड को देखते हुए, ऐसा लगता है कि ओजी के माध्यम से चलते समय मैं केवल पासवर्ड फ़ाइल को hdfs पर रख सकता हूं। डॉक्टर में वे दावा करते हैं कि यह या तो hdfs या हार्ड ड्राइव पर हो सकता है। क्या आप जानते हैं कि मैं इसे एचडी पर जाने के लिए कैसे मजबूर कर सकता हूं? – hba

+0

स्थानीय ड्राइव से फ़ाइल लोड करना वास्तव में व्यवहार्य है, लेकिन ओजी ओडोई से इस क्षमता का उपयोग करके, ओडोई आपके हडोप क्लस्टर पर किसी भी यादृच्छिक मशीन पर स्क्वाप निष्पादित करेगा, क्योंकि यह बेकार है। मैं एचडीएफएस पर पासवर्ड फाइल अपलोड करने और अनुमतियों को बदलने की सिफारिश करता हूं ताकि केवल आप इसे पढ़ सकें। –

+0

@Thx Jarek कृपया ऊपर देखें ... – hba

संबंधित मुद्दे

 संबंधित मुद्दे