मुझे पता है कि कमांड लाइन के माध्यम से sqoop का उपयोग कैसे करें। लेकिन जावा प्रोग्राम का उपयोग करके sqoop कमांड को कॉल करने के बारे में नहीं पता। क्या कोई भी कुछ कोड दृश्य दे सकता है?जावा प्रोग्राम में स्क्वाप का उपयोग कैसे करें?
उत्तर
आप अपने क्लासपाथ में स्क्वाप जार समेत अपने जावा कोड के अंदर से स्कूप चला सकते हैं और Sqoop.runTool()
विधि को कॉल कर सकते हैं। प्रोग्रामिंग के रूप में आपको आवश्यक पैरामीटर बनाना होगा जैसे कि यह कमांड लाइन था (उदा। --connect
इत्यादि)।
कृपया निम्नलिखित पर ध्यान देना:
- सुनिश्चित करें कि sqoop उपकरण नाम (उदाहरण के आयात/निर्यात आदि) पहले पैरामीटर है।
- क्लासपाथ ऑर्डरिंग पर ध्यान दें - निष्पादन विफल हो सकता है क्योंकि sqoop को लाइब्रेरी के संस्करण X की आवश्यकता होती है और आप एक अलग संस्करण का उपयोग करते हैं। सुनिश्चित करें कि जिन पुस्तकालयों को स्क्वाइप की आवश्यकता है, वे आपकी निर्भरताओं से प्रभावित नहीं हैं। मुझे कॉमन्स-आईओ (एसक्यूओपी को v1.4 की आवश्यकता है) के साथ ऐसी समस्या का सामना करना पड़ा है और जब मैं कॉमन्स-आईओ v1.2 का उपयोग कर रहा था तब से NoSuchMethod अपवाद था।
- प्रत्येक तर्क को एक अलग सरणी तत्व पर होना आवश्यक है। उदाहरण के लिए, "- कनेक्ट करें jdbc: mysql: ..." को सरणी में दो अलग-अलग तत्वों के रूप में पारित किया जाना चाहिए, एक नहीं।
- स्क्वाप पार्सर जानता है कि डबल-उद्धृत पैरामीटर कैसे स्वीकार करें, इसलिए यदि आपको आवश्यकता है तो डबल कोट्स का उपयोग करें (मैं हमेशा सुझाव देता हूं)। एकमात्र अपवाद फ़ील्ड-सीमित है-पैरामीटर द्वारा जो एक सिंगल की अपेक्षा करता है, इसलिए इसे डबल-कोट न करें।
- मैं कमांड लाइन-तर्क निर्माण तर्क और वास्तविक निष्पादन को विभाजित करने का सुझाव दूंगा ताकि आपके तर्क को वास्तव में उपकरण चलाने के बिना ठीक से परीक्षण किया जा सके।
- पर्यावरण पर निर्भरता को रोकने के लिए - हाडोप-होम पैरामीटर का उपयोग करना बेहतर होगा।
Sqoop.runTool()
का लाभSqoop.Main()
के विपरीत यह तथ्य है किrunTool()
निष्पादन के त्रुटि कोड को वापस कर दें।
आशा है कि मदद करता है।
final int ret = Sqoop.runTool(new String[] { ... });
if (ret != 0) {
throw new RuntimeException("Sqoop failed - return code " + Integer.toString(ret));
}
आर एल
धन्यवाद ... मैं प्रत्येक विधि के विवरण देखने के लिए नेट पर स्क्वाप डॉक्स की खोज कर रहा था ... लेकिन नहीं मिला .... क्या आप मुझे स्कूप डॉक्स – pradeep
के बारे में बता सकते हैं जो दस्तावेज़ मैंने उपयोग किए हैं http: // archive.cloudera.com/cdh/3/sqoop/SqoopUserGuide.html#_controlling_the_hadoop_installation। हालांकि, वे स्क्वाप निष्पादित करने की विधि का वर्णन नहीं करते हैं। मैंने उस के लिए एसक्यूओपी स्रोत कोड का उपयोग किया है, ओजी परियोजना से कुछ मदद के साथ (http://incubator.apache.org/oozie/) –
अरे अगर आपके पास कोड उदाहरण था..यह मदद करेगा। –
आप निष्पादन के स्थान और आदेश पंक्ति तर्क आप एक ProcessBuilder
उपयोग कर सकते हैं पता है, यह तो एक अलग Process
कि जावा पूरा करने के लिए पर नजर रखने और लौट कोड कर सकते हैं चलाया जा सकता है।
आम तौर पर यदि एपीआई एकीकरण बिंदु है, तो इसका उपयोग करना बेहतर होगा बाल प्रक्रियाओं को दूर करने से पहले। – Turbo
HDFS/HBase के लिए MySQL से डेटा आयात करने के लिए जावा कार्यक्रम में sqoop प्रयोग करने के लिए एक नमूना कोड नीचे का पता लगाएं। सुनिश्चित करें कि आप अपने classpath में sqoop जार किया हुआ है:
SqoopOptions options = new SqoopOptions();
options.setConnectString("jdbc:mysql://HOSTNAME:PORT/DATABASE_NAME");
//options.setTableName("TABLE_NAME");
//options.setWhereClause("id>10"); // this where clause works when importing whole table, ie when setTableName() is used
options.setUsername("USERNAME");
options.setPassword("PASSWORD");
//options.setDirectMode(true); // Make sure the direct mode is off when importing data to HBase
options.setNumMappers(8); // Default value is 4
options.setSqlQuery("SELECT * FROM user_logs WHERE $CONDITIONS limit 10");
options.setSplitByCol("log_id");
// HBase options
options.setHBaseTable("HBASE_TABLE_NAME");
options.setHBaseColFamily("colFamily");
options.setCreateHBaseTable(true); // Create HBase table, if it does not exist
options.setHBaseRowKeyColumn("log_id");
int ret = new ImportTool().run(options);
हारेल ने सुझाव दिया रूप में, हम त्रुटि से निपटने के लिए विधि रन() के उत्पादन में उपयोग कर सकते हैं। उम्मीद है कि यह मदद करता है।
विकास यह मेरे लिए काम किया द्वारा दिए गए कोड का पालन करें और classpath में इन जार फ़ाइलों में शामिल हैं और इन पैकेजों
आयात com.cloudera.sqoop.SqoopOptions आयात करें; आयात com.cloudera.sqoop.tool आयात करें।ImportTool;
रेफरी पुस्तकालय
- Sqoop-1.4.4 जार/sqoop
- ojdbc6.jar/sqoop/lib (ओरेकल के लिए)
- कॉमन्स-प्रवेश-1.1.1.jar Hadoop/lib
- Hadoop कोर-1.2.1.jar/Hadoop
- कॉमन्स-CLI-1.2.jar Hadoop/lib
- commmons-io.2.1.jar Hadoop/lib
- कॉमन्स-विन्यास-1.6.jar Hadoop/lib
- कॉमन्स-lang-2.4.jar Hadoop/lib
- जैक्सन कोर-ASL-1.8.8.jar Hadoop/lib
- जैक्सन-नक्शाकार-asl- 1.8.8.jar Hadoop/lib
- कॉमन्स-httpclient-3.0.1.jar Hadoop/lib
JRE प्रणाली पुस्तकालय
1.resources.jar JDK/JRE/lib 2.rt .jar jdk/jre/lib 3. jsse.jar jdk/jre/lib 4. jce.jar jdk/jre/lib 5. charsets, jar jdk/jre/lib 6. jfr.jar jdk/jre/lib 7. dnsns.jar jdk/jre/lib/ext 8. sunec .jar jdk/jre/lib/ext 9. zipfs.jar jdk/jre/lib/ext 10. sunpkcs11.jar jdk/jre/lib/ext 11. localedata.jar jdk/jre/lib/ext 12 sunjce_provider.jar jdk/jre/lib/ext
कभी-कभी आपको त्रुटि मिलती है यदि आपकी ग्रहण परियोजना जेडीके 1.6 का उपयोग कर रही है और आपके द्वारा जोड़े गए पुस्तकालय JDK1.7 हैं, इस मामले के लिए ग्रहण में परियोजना बनाते समय जेआरई को कॉन्फ़िगर करें।
विकास अगर मैं आयातित फ़ाइलों को छिद्र में रखना चाहता हूं तो क्या मुझे विकल्प का उपयोग करना चाहिए .parameter ("--hive-import")?
एक चाल है जो मेरे लिए बहुत आसान काम करती है। एसएसआई के माध्यम से आप सीधे स्क्वाप कमांड निष्पादित कर सकते हैं। बस आपको एक एसएसएच जावा लाइब्रेरी
का उपयोग करना है, आपको इस चरण का पालन करना होगा।
डाउनलोड sshxcute जावा पुस्तकालय: https://code.google.com/p/sshxcute/ और यह अपने जावा परियोजना के निर्माण पथ जो निम्नलिखित जावा कोड शामिल में जोड़े
import net.neoremind.sshxcute.core.SSHExec;
import net.neoremind.sshxcute.core.ConnBean;
import net.neoremind.sshxcute.task.CustomTask;
import net.neoremind.sshxcute.task.impl.ExecCommand;
public class TestSSH {
public static void main(String args[]) throws Exception{
// Initialize a ConnBean object, parameter list is ip, username, password
ConnBean cb = new ConnBean("192.168.56.102", "root","hadoop");
// Put the ConnBean instance as parameter for SSHExec static method getInstance(ConnBean) to retrieve a singleton SSHExec instance
SSHExec ssh = SSHExec.getInstance(cb);
// Connect to server
ssh.connect();
CustomTask sampleTask1 = new ExecCommand("echo $SSH_CLIENT"); // Print Your Client IP By which you connected to ssh server on Horton Sandbox
System.out.println(ssh.exec(sampleTask1));
CustomTask sampleTask2 = new ExecCommand("sqoop import --connect jdbc:mysql://192.168.56.101:3316/mysql_db_name --username=mysql_user --password=mysql_pwd --table mysql_table_name --hive-import -m 1 -- --schema default");
ssh.exec(sampleTask2);
ssh.disconnect();
}
}
ठीक काम कर रहा है, लेकिन लॉग गलत लगता है। स्क्वाप नौकरी सफलतापूर्वक निष्पादित की जाती है और कंसोल गलत दिखा रहा है कि नौकरी विफल रही है। 'जांच करें कि निष्पादन सफलता है या नहीं ... कमांड निष्पादित करते समय निष्पादन विफल: sqoop import --connect .... त्रुटि संदेश:
- 1. स्क्वाप निर्यात
- 2. जावा प्रोग्राम में परिणामसेट का उपयोग
- 3. जावा प्रोग्राम को संकलित करें ... जावा प्रोग्राम
- 4. जावा में HtmlUnit का उपयोग कैसे करें?
- 5. जावा प्रोग्राम का नाम प्राप्त करें
- 6. गो प्रोग्राम में पीप्रोफ का उपयोग कैसे करें
- 7. मेरे एंड्रॉइड प्रोग्राम में संपर्कों का उपयोग कैसे करें
- 8. मेरे सी ++ प्रोग्राम में COM dll का उपयोग कैसे करें
- 9. अन्य प्रोग्राम की मेमोरी में संरचना का उपयोग कैसे करें?
- 10. जावा मेनिफेस्ट क्लासपाथ में नियमित अभिव्यक्ति का उपयोग कैसे करें?
- 11. जावा प्रोग्राम निष्पादन की गति कैसे करें
- 12. जावा में प्रिंटवाइटर और फ़ाइल कक्षाओं का उपयोग कैसे करें?
- 13. जावा का उपयोग कर सरल एनएफसी प्रोग्राम कैसे बनाएं?
- 14. जावा प्रोग्राम का संकलन
- 15. जावा प्रोग्राम में mkdir और rmdir आदेशों का उपयोग कैसे करें
- 16. जावा में ओपन टाइप फ़ॉन्ट्स का उपयोग कैसे करें?
- 17. जावा प्रोग्राम
- 18. जावा: प्रोग्राम
- 19. जावा प्रोग्राम में स्टैक ट्रेस पीढ़ी को कैसे अक्षम करें?
- 20. जावा प्रोग्राम
- 21. जावा में प्रोग्रेस बार का उपयोग कैसे करें (नेटबीन्स जीयूआई)
- 22. प्रोग्राम प्रोग्राम के रूप में माउस प्रोग्राम कैसे उत्पन्न करें?
- 23. जावा में एक पूर्ण-स्क्रीन मोड कैसे प्रोग्राम करें?
- 24. scala.collection.immutable का उपयोग कैसे करें। जावा कोड
- 25. जावा एपीआई का उपयोग कैसे करें?
- 26. जावा प्रोग्राम
- 27. जावा में स्ट्रिंगबिल्डर का उपयोग कब करें
- 28. जावा में स्कैला स्थिरांक का उपयोग करें
- 29. जावा प्रोग्राम प्रोग्राम लॉन्चर के रूप में .bat फ़ाइल का उपयोग क्यों करते हैं?
- 30. विंडोज में प्रोग्राम का उपयोग प्रोग्रामेटिक रूप से निर्धारित करें?
Runtime.exec (आदेश); क्या आप यही खोज रहे हैं? Http: //docs.oracle.com/javase/1.5.0/docs/api/java/lang/Runtime.html – kosa