2015-09-15 6 views
8

मैं ट्विटर से ट्विट प्राप्त करने के लिए स्पार्क स्ट्रीमिंग का उपयोग करता हूं। मैं कई चेतावनी का कहना है कि हो:स्पार्क स्ट्रीमिंग को चेतावनी मिलती है "1 सहकर्मियों के बजाय केवल 0 सहकर्मी (ओं) के लिए दोहराया गया"

replicated to only 0 peer(s) instead of 1 peers 

के लिए यह चेतावनी है क्या?

मेरी कोड है:

SparkConf conf = new SparkConf().setAppName("Test"); 
    JavaStreamingContext sc = new JavaStreamingContext(conf, Durations.seconds(5)); 
    sc.checkpoint("/home/arman/Desktop/checkpoint"); 

    ConfigurationBuilder cb = new ConfigurationBuilder(); 
    cb.setOAuthConsumerKey("****************") 
     .setOAuthConsumerSecret("**************") 
     .setOAuthAccessToken("*********************") 
     .setOAuthAccessTokenSecret("***************"); 


    JavaReceiverInputDStream<twitter4j.Status> statuses = TwitterUtils.createStream(sc, 
      AuthorizationFactory.getInstance(cb.build())); 

    JavaPairDStream<String, Long> hashtags = statuses.flatMapToPair(new GetHashtags()); 
    JavaPairDStream<String, Long> hashtagsCount = hashtags.updateStateByKey(new UpdateReduce()); 
    hashtagsCount.foreachRDD(new saveText(args[0], true)); 

    sc.start(); 
    sc.awaitTerminationOrTimeout(Long.parseLong(args[1])); 
    sc.stop(); 

उत्तर

14

जब स्पार्क स्ट्रीमिंग के साथ डाटा पढ़ने, आने वाले डेटा ब्लॉक गलती सहिष्णुता की वजह से एक और नोड/कार्यकर्ता कम से कम एक को दोहराया जाता है। इसके बिना ऐसा हो सकता है कि अगर रनटाइम स्ट्रीम से डेटा पढ़ता है और फिर विफल रहता है तो डेटा के इस विशेष टुकड़े को खो दिया जाएगा (यह पहले ही पढ़ा गया है और स्ट्रीम से मिटा दिया गया है और विफलता के कारण कार्यकर्ता पक्ष में भी खो गया है)।

Spark documentation का जिक्र करते हुए:

एक स्पार्क स्ट्रीमिंग चालक कार्यक्रम चल रहा हो, प्रणाली विभिन्न स्रोतों से डेटा प्राप्त करता है और और बैचों में विभाजित। डेटा के प्रत्येक बैच को आरडीडी के रूप में माना जाता है, यानी, एक अपरिवर्तनीय समांतर डेटा संग्रह। इन इनपुट आरडीडी को स्मृति में सहेजा जाता है और गलती सहनशीलता के लिए दो नोड्स में दोहराया जाता है।

आपके मामले में चेतावनी का अर्थ है कि स्ट्रीम से आने वाले डेटा को दोहराया नहीं जाता है। इसका कारण यह हो सकता है कि आप स्पार्क कार्यकर्ता के केवल एक उदाहरण या स्थानीय मोड में चल रहे ऐप को चलाएं। अधिक स्पार्क श्रमिकों को शुरू करने का प्रयास करें और देखें कि चेतावनी खत्म हो गई है या नहीं।

+0

क्या इन WARN को कंसोल में आउटपुट होने से रोकने का कोई तरीका है? –

+2

परिवर्तन लॉग करने के लिए log4j.rootCategory = WARN, log4j.rootCategory = ERROR को कंसोल, log4j.properties फ़ाइल में कंसोल –

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