स्क्वाप आपको समांतर और --split-by और --boundary-query में डेटा आयात करने की अनुमति देता है और आपको अधिक नियंत्रण देता है। यदि आप केवल एक टेबल आयात कर रहे हैं तो यह प्राथमिक कुंजी का उपयोग करेगा, हालांकि यदि आप अधिक उन्नत क्वेरी कर रहे हैं, तो आपको समांतर विभाजन करने के लिए कॉलम निर्दिष्ट करना होगा।
अर्थात,
sqoop import \
--connect 'jdbc:mysql://.../...' \
--direct \
--username uname --password pword \
--hive-import \
--hive-table query_import \
--boundary-query 'SELECT 0, MAX(id) FROM a' \
--query 'SELECT a.id, a.name, b.id, b.name FROM a, b WHERE a.id = b.id AND $CONDITIONS'\
--num-mappers 3
--split-by a.id \
--target-dir /data/import \
--verbose
सीमा क्वेरी आप अधिकतम, न्यूनतम प्राप्त करने के लिए एक अनुकूलित क्वेरी निर्दिष्ट कर सकते हैं। अन्यथा यह आपके कथन कथन पर MIN (a.id), MAX (a.id) करने का प्रयास करेगा।
परिणाम हो जाएगा (यदि मिनट = 0, अधिकतम = 30) 3 प्रश्नों कि समानांतर में चलाने मिलता है:
SELECT a.id, a.name, b.id, b.name FROM a, b WHERE a.id = b.id AND a.id BETWEEN 0 AND 10;
SELECT a.id, a.name, b.id, b.name FROM a, b WHERE a.id = b.id AND a.id BETWEEN 11 AND 20;
SELECT a.id, a.name, b.id, b.name FROM a, b WHERE a.id = b.id AND a.id BETWEEN 21 AND 30;
क्षमा करें। मुझे अभी भी यह नहीं मिला है। क्या है - सेप्लिट-बाय? क्या यह आदेश की प्रसंस्करण के साथ कुछ करने के लिए है? – DrewRose