2013-10-16 11 views
6

से डेटा सिंक्रनाइज़ करें हम अमेज़ॅन रेडशफ्ट में विशाल डेटासेट पर कुछ एकत्रीकरण करते हैं, और हमारे पास MySQL में कुछ अपेक्षाकृत कम मात्रा में डेटा है। RedShift में शामिल होने के लिए हमें MySQL में डेटा की आवश्यकता है। MySQL डेटा को RedShift में सिंक्रनाइज़ करने का सबसे अच्छा तरीका क्या है? क्या रेडशिफ्ट में ओरेकल में रिमोट व्यू जैसी कोई चीज है? या क्या मुझे प्रोग्रामिंग रूप से MySQL क्वेरी करना चाहिए और RedShift में डालें/अपडेट करना चाहिए?MySQL से अमेज़ॅन RedShift

उत्तर

3

जब रेडशिफ्ट में शामिल होने के लिए MySQL डेटा की आवश्यकता होती है, तो हम आमतौर पर इसे एक से दूसरे में भेजते हैं।

यह अर्थ है:

  1. Redshift: एक अनुरूप तालिका स्कीमा बनाना (मन Redshift में असर/psql की विशेषताओं)
  2. MySQL: डेटा तालिका डम्पिंग
  3. (csv प्रारूप में) निर्यात ज़िप किया जा रहा, तालिका छोटा किया जा रहा है, और का उपयोग करके सभी डेटा आयात करने की नकल

कदम: और S3

  • Redshift करने के लिए इसे भेजने 2 से 4 को स्क्रिप्ट किया जा सकता है, और आपको आवश्यक या नियमित रूप से Redshift पर ताजा डेटा भेजने की अनुमति देता है।

  • 7

    रेडशिफ्ट अब एसएसएच के माध्यम से loading data from remote hosts का समर्थन करता है। इस तकनीक शामिल है:

    1. दूरस्थ होस्ट (रों)
    2. क्लस्टर नोड्स
    3. के आईपी पते से दूरस्थ होस्ट (ओं) को SSH पहुंच की अनुमति देने पर authorized_keys फाइल करने के लिए क्लस्टर से सार्वजनिक कुंजी जोड़ना
    4. रिमोट होस्ट (ओं), सार्वजनिक कुंजी (ओं), और रिमोट होस्ट
    5. पर निष्पादित करने के लिए कमांड को जेएसओएन मैनिफेस्ट अपलोड करना एक निर्दिष्ट मैनिफेस्ट फ़ाइल और एडब्लूएस क्रेडेंशियल्स के साथ COPY कमांड चला रहा है

    मैनिफेस्ट द्वारा निर्दिष्ट कमांड एक मनमानी कमांड चलाता है जो Redshift COPY कमांड द्वारा format suitable for ingest में टेक्स्ट आउटपुट प्रिंट करता है।

    -2

    माइस्क्ल डेटा को Redshift लोड करने के लिए यह simplest way देखें। जब आपकी अपेक्षा केवल प्रारंभिक डेटा स्नैपशॉट को Redshift पर लोड कर रही है, तो उस मुफ्त समाधान के साथ प्रयास करें। इसके अलावा आपको स्कीमा माइग्रेशन, साइड बाय साइड कंसोल कंसोल और पूरी लोडिंग प्रक्रिया के कुछ सांख्यिकीय रिपोर्ट (चार्ट के साथ) मिल जाएगा।

    +0

    कृपया अपने पद, कोई समाधान नहीं है, लेकिन सिर्फ एक संदर्भ है जो बढ़ावा देने के लिए पोस्ट नहीं करें। यह एक अग्रणी पीढ़ी पोर्टल नहीं है। – lazywiz

    0

    ओरेकल में "रिमोट व्यू" क्या है?

    वैसे भी, यदि आप तालिका से सीएसवी फ़ाइल में डेटा निकाल सकते हैं तो आपके पास एक और स्क्रिप्टिंग विकल्प है। अमेज़ॅन रेडशिफ्ट में अपने सीएसवी लोड को स्क्रिप्ट करने के लिए आप पाइथन/बोटो/psycopg2 कॉम्बो का उपयोग कर सकते हैं।

    मेरे MySQL_To_Redshift_Loader मैं निम्नलिखित है:

    1. निकालें अस्थायी फ़ाइल में MySQL से डेटा। एस 3 को

      loadConf=[ db_client_dbshell ,'-u', opt.mysql_user,'-p%s' % opt.mysql_pwd,'-D',opt.mysql_db_name, '-h', opt.mysql_db_server]  
      ... 
      q=""" 
      %s %s 
      INTO OUTFILE '%s' 
      FIELDS TERMINATED BY '%s' 
      ENCLOSED BY '%s' 
      LINES TERMINATED BY '\r\n'; 
      """ % (in_qry, limit, out_file, opt.mysql_col_delim,opt.mysql_quote) 
      p1 = Popen(['echo', q], stdout=PIPE,stderr=PIPE,env=env) 
      p2 = Popen(loadConf, stdin=p1.stdout, stdout=PIPE,stderr=PIPE) 
      ... 
      
    2. कम्प्रेस और लोड डेटा boto पायथन मॉड्यूल और बहुखण्डीय अपलोड का उपयोग कर।

      conn = boto.connect_s3(AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY) 
      bucket = conn.get_bucket(bucket_name) 
      k = Key(bucket) 
      k.key = s3_key_name 
      k.set_contents_from_file(file_handle, cb=progress, num_cb=20, 
      reduced_redundancy=use_rr) 
      
    3. उपयोग psycopg2 कॉपी आदेश तालिका लाल विचलन के लिए डेटा संलग्न करने के लिए।

      sql=""" 
      copy %s from '%s' 
      CREDENTIALS 'aws_access_key_id=%s;aws_secret_access_key=%s' 
      DELIMITER '%s' 
      FORMAT CSV %s 
      %s 
      %s 
      %s;""" % (opt.to_table, fn, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY,opt.delim,quote,gzip, timeformat, ignoreheader) 
      
    संबंधित मुद्दे