2012-04-11 12 views
5

में ऑटोइनक्रिएशन-आईडी का उपयोग कैसे करें मेरे पास एचडीएफएस में एक टैब से अलग टेक्स्टफाइल है, और इसे एक MySQL तालिका में निर्यात करना चाहते हैं।स्क्वाप निर्यात

चूंकि टेक्स्टफाइल में पंक्तियों में संख्यात्मक आईडी नहीं हैं, इसलिए मैं SQL INSERT (autoincrement) के दौरान स्वचालित रूप से सेट आईडी के साथ एक तालिका में निर्यात कैसे करूं?

अगर मैं (आईडी तालिका में आखिरी परिभाषित विशेषता जा रहा है) निर्यात करने की कोशिश, मैं

java.util.NoSuchElementException 
    at java.util.AbstractList$Itr.next(AbstractList.java:350) 
    at entity.__loadFromFields(entity.java:996) 

मिलता है मैं स्वत: जनरेट की कक्षा लेने के लिए और इसे संशोधित आईडी-विशेषता बाहर करने के लिए, मैं

मिल
java.io.IOException: java.sql.SQLException: No value specified for parameter 27 

जहां पैरामीटर 27 'आईडी' है।

संस्करण Sqoop 1.3.0-cdh3u3 है

उत्तर

3

I n Sqoop 1.4.1, एक "शून्य" लिखना पाठ फ़ाइल फ़ील्ड स्थिति में ऑटोइनक्रिकमेंट फ़ील्ड के अनुरूप मेरे लिए काम करता है। MySQL पर निर्यात करने के बाद आप एक वृद्धिशील और स्वचालित रूप से हस्ताक्षरित आईडी देखेंगे।

+0

मैं इसका परीक्षण नहीं कर सकता, लेकिन यह मानता हूं कि यह काम कर रहा है, यह अधिक सुरुचिपूर्ण समाधान है। – thomers

+0

एफवाईआई: सचमुच, क्वेरी में शून्य के आसपास उद्धरण। मैं हैडोप से रेल की माईएसक्यूएल तालिका में निर्यात करने की कोशिश कर रहा था। चूंकि रेल टेबल में एक ऑटो-इंक्रिमेंटिंग आईडी फ़ील्ड था, मैंने जोड़ने की कोशिश की : ... आईडी के रूप में "शून्य", ... हाइव क्वेरी में पहला फ़ील्ड के रूप में। महान काम किया !! टीवाई जॉर्ज! –

0

Sqoop मेलिंग सूची पर किसी के रूप में सुझाव दिया:

  • इस तालिका
  • कॉपी में
  • Sqoop निर्यात आईडी के बिना एक अस्थायी तालिका बनाएं अंतिम तालिका में इस तालिका की पंक्तियां (जिसमें ऑटोइनक्रिकमेंट आईडी है)
0

मेरा स्रोत तालिका HIVE में है। मेरे लिए क्या काम करता है कि मैं आईडी int नामक कॉलम जोड़ता हूं, और स्तंभ को न्यूल के रूप में पॉप्युलेट करता हूं। Sqoop के बाद, mysql डालने (आईडी, एक्स, वाई) मान (शून्य, "x_value," y_value ") प्राप्त करेगा। फिर mysql आईडी को स्वत: वृद्धि के रूप में पॉप्युलेट करना जानता है।

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