2014-06-21 7 views
5

पर डेटा कैसे डालें I Kinesis के लिए नया हूं। प्रलेखन को पढ़ने के लिए मैंने पाया कि मैं निर्माता से डेटा प्राप्त करने के लिए Kinesis स्ट्रीम बना सकता हूं। फिर केसीएल का उपयोग स्ट्रीम से आगे की प्रक्रिया तक इस डेटा को पढ़ेगा। मैं समझता हूं कि आईआरकॉर्डप्रोसेसर को लागू करके केसीएल आवेदन कैसे लिखना है।सर्वर से डेटा को किनेसिस स्ट्रीम

हालांकि किनेसिस स्ट्रीम पर डेटा डालने के तरीके के बारे में पहला चरण अभी भी मुझे स्पष्ट नहीं है। क्या हमारे पास कुछ एडब्ल्यूएस एपीआई है जिसे इसे प्राप्त करने के लिए कार्यान्वयन की आवश्यकता है।

परिदृश्य: मेरे पास एक सर्वर है जो फ़ोल्डरों में विभिन्न स्रोतों से डेटा प्राप्त कर रहा है। प्रत्येक फ़ोल्डर में टेक्स्ट फ़ाइल होती है जिसमें पंक्तियों में फ़र्टर विश्लेषणात्मक कार्य के लिए आवश्यक विशेषताओं को शामिल किया जाता है। मुझे इन सभी डेटा को किनेस स्ट्रीम में धक्का देना है।

मैं Kinesis धारा में के लिए बाहर इस्तेमाल किया जा wil वर्ग putData विधि नीचे के रूप में नीचे दिए गए कोड कुछ चाहिए

public class Put { 

    AmazonKinesisClient kinesisClient; 

    Put() 
    { 
     String accessKey = "My Access Key here" ; 
     String secretKey = "My Secret Key here" ; 
     AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey); 
     kinesisClient = new AmazonKinesisClient(credentials); 
     kinesisClient.setEndpoint("kinesis.us-east-1.amazonaws.com", "kinesis", "us-east-1"); 
     System.out.println("starting the Put Application"); 
    } 

    public void putData(String fileContent,String session) throws Exception 
    { 
     final String myStreamName = "ClickStream"; 

      PutRecordRequest putRecordRequest = new PutRecordRequest(); 
      putRecordRequest.setStreamName(myStreamName); 
      String putData = fileContent; 
      putRecordRequest.setData(ByteBuffer.wrap(putData.getBytes())); 
      putRecordRequest.setPartitionKey("session"+session); 
      PutRecordResult putRecordResult = kinesisClient.putRecord(putRecordRequest); 
      System.out.println("Successfully putrecord, partition key : " + putRecordRequest.getPartitionKey() 
        + ", ShardID : " + putRecordResult.getShardId()); 
      System.out.println(fileContent); 
      System.out.println("Sequence Number: "+putRecordResult.getSequenceNumber()); 

      System.out.println("Data has been PUT successfully"); 


    } 
} 

हालांकि सर्वर से स्रोत फ़ोल्डर और फिर से फ़ाइल को पढ़ने क्या डिजाइन मैं करने के लिए putData कॉल करने के लिए उपयोग करना चाहिए Kinesis धारा पर रिकॉर्ड प्राप्त करें। क्या मुझे अनंत लूप की आवश्यकता है और सभी फाइलें पढ़ने की ज़रूरत है और फिर यह या कुछ ढांचा करें जो गलती सहनशीलता, असफलता के एक बिंदु के साथ बेहतर तरीके से ऐसा करेगी। किसी भी तरह की सहायता का स्वागत किया जाएगा।

संक्षिप्त रूप से: मुझे नियमित रूप से जेनरेट किए गए डेटा को किनेसिस स्ट्रीम में रखने के लिए एक बेहतर तकनीक की आवश्यकता होती है, जो सर्वर को नियमित अंतराल पर उत्पन्न होता है। धन्यवाद

उत्तर

2

तो यह आप पहले से ही उपयोग कर रहे हैं लगता है ... http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/kinesis/AmazonKinesisClient.html

विशिष्ट विधि आप चाहते हैं इस प्रकार है।

आपको स्ट्रीम नाम, रिकॉर्ड और स्ट्रीम कुंजी की आवश्यकता है। http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/kinesis/model/PutRecordResult.html

लेकिन ऐसा लगता है कि आपके पास यह सब है?

आपको फिर अपने सर्वर लॉग फ़ाइल को हमेशा चलने वाले प्रोग्राम की आवश्यकता होगी और जब कभी कोई नई लाइन होगी तो यह इसे धक्का देगी।

लेकिन आपका डेटा केवल 24 घंटों तक ही बैठेगा। फिर आपको डेटा का उपभोग करने और इसे किसी अन्य एडब्ल्यूएस संसाधन में रखने के लिए एक कार्यकर्ता कार्यक्रम की आवश्यकता होती है।

+0

हाँ मैं Kinesis से S3 के लिए डेटा ले जाने के कर रहा हूँ। मैं प्रत्येक दिन के लिए अपने सर्वर से फ़ोल्डर से फ़ाइलों को पढ़ने के लिए कुछ तैयार किए गए समाधान देख रहा था और इन सभी डेटा कोनेसिस स्ट्रीम में डाल दिया। ठीक है मेरे सर्वर में मेरे पास अलग-अलग तारीख के लिए एकाधिक फ़ोल्डर हैं और प्रत्येक दिन लॉग जानकारी वाले कई फाइलें होती हैं। मैं इसे किनेसिस स्ट्रीम में स्थानांतरित करना चाहता हूं। इस स्तर पर मुझे लगता है कि मैं घटनाओं को पढ़ने के लिए कुछ थ्रेड देरी के साथ अनंत लूप के साथ सरल प्रोग्राम लिख सकता हूं और कुछ पहले से ही सिद्ध समाधान मौजूद नहीं होने पर किनेसिस में स्थानांतरित हो सकता है। धन्यवाद – Sam

+0

क्या मैं Kinesis स्ट्रीम में डेटा डालने के लिए RabbitMQ का उपयोग कर सकता हूं। ? – Sam

+0

अमेज़ॅन बॉक्स पुशिंग प्रोग्राम से बाहर कोई भी प्रदान नहीं करता है। आपको इसे स्वयं बनाना होगा। RabbitMQ –

0

यदि आप लॉग फ़ाइलों को निगलना चाहते हैं, तो कृपया Fluentd आज़माएं। Fluentd लगातार लॉग फ़ाइलों को पूंछ कर सकते हैं, और डेटा बफरिंग, एन्क्रिप्शन, संपीड़न, और पुनः प्रयास करें।

Fluentd के Kinesis प्लगइन

अमेजन वेब सेवाओ के ही द्वारा विकसित की है।

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