क्या पिग से परिणामों को सीधे mysql जैसे डेटाबेस में निर्यात करने का कोई तरीका है?पिग से परिणामों को डेटाबेस में निर्यात करने का एक तरीका
उत्तर
जबकि ध्यान में रखते हुए क्या orangeoctopus कहा (DDoS से सावधान ...) आप DBStorage को एक नज़र पड़ा है?
data = LOAD '...' AS (...);
...
STORE data INTO DBStorage('com.mysql.jdbc.Driver', 'dbc:mysql://host/db', 'INSERT ...');
मुख्य समस्या मैं देख रहा हूँ कि प्रत्येक कम करने को प्रभावी ढंग से एक ही समय के आसपास डेटाबेस में डालने के लिए जा रहा है है।
यदि आपको नहीं लगता कि यह एक मुद्दा होगा, तो मेरा सुझाव है कि आप custom Storage method लिखते हैं जो डेटाबेस में सीधे डालने और एचडीएफएस को कुछ भी लिखने के लिए जेडीबीसी (या कुछ समान) का उपयोग नहीं करता है।
आप अपने स्वयं के डेटाबेस पर एक DDOS हमला प्रदर्शन शायद HDFS पर डेटा एकत्रित और mysql में एक अलग थोक लोड प्रदर्शन बेहतर होगा से डरते हैं।
मैं वर्तमान में एक एम्बेडेड सुअर आवेदन जो लोड करता है के साथ प्रयोग कर रहा हूँ PigServer.OpenIterator और कनेक्शन के माध्यम से एक JDBC में mysql परिणाम है। यह परीक्षण में बहुत अच्छी तरह से काम किया है, लेकिन मैंने अभी तक पैमाने पर कोशिश नहीं की है। यह पहले से सुझाए गए कस्टम स्टोरेज विधि के समान है, लेकिन एक बिंदु से चलता है, इसलिए कोई आकस्मिक डीडीओएस हमला नहीं होता है। यदि आप डीबी सर्वर से लोड नहीं चलाते हैं तो आप प्रभावी रूप से नेटवर्क स्थानांतरण लागत को दो बार (क्लस्टर -> स्टेजिंग मशीन, स्टेजिंग मशीन -> डीबी सर्वर) का भुगतान करना समाप्त कर देते हैं (मैं व्यक्तिगत रूप से डीबी को छोड़कर डीबी को छोड़कर कुछ भी नहीं करना पसंद करता हूं सर्वर), लेकिन यह "फ़ाइल को लिखने और इसे थोक लोड" विकल्प से अलग नहीं है।
Sqoop जाना अच्छा तरीका हो सकता है लेकिन यह सेट-अप (IMHO) इन सभी Hadoop से संबंधित परियोजनाओं के रूप में करने के लिए मुश्किल है ...
सुअर के DBStorage है ठीक काम कर रहा है (कम से कम भंडारण के लिए)।
मत भूलना Piggybank और अपने MySQL चालक रजिस्टर करने के लिए:
-- Register Piggy bank
REGISTER /opt/cmr/pig/pig-0.10.0/lib/piggybank.jar;
-- Register MySQL driver
REGISTER /opt/cmr/mysql/drivers/mysql-connector-java-5.1.15-bin.jar
यहां नमूने कॉल है:
-- Store a relation into a SQL table
STORE relation INTO 'unused' USING org.apache.pig.piggybank.storage.DBStorage('com.mysql.jdbc.Driver', 'jdbc:mysql://<mysqlserver>/<database>', '<login>', '<password>', 'REPLACE INTO <table> (<column1>, <column2>) VALUES (?, ?)');
लगता है कोई रास्ता नहीं चारों ओर एक यूडीएफ JDBC का उपयोग करता है लेखन मौजूद है। ।धन्यवाद! – Christoph