2015-09-15 16 views
8

Tôi sử dụng tính năng phát trực tuyến tia lửa để nhận các bản tóm tắt từ twitter. Tôi nhận được nhiều cảnh báo cho biết:Phát trực tuyến Spark nhận cảnh báo "chỉ được sao chép thành 0 người ngang hàng thay vì 1 người ngang hàng"

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

cảnh báo này là gì?

mã của tôi là:

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(); 

Trả lời

14

Khi đọc dữ liệu với Spark streaming, khối dữ liệu đến được nhân rộng đến ít nhất một một nút/công nhân vì lỗi khoan nhượng. Nếu không có điều đó có thể xảy ra trong trường hợp thời gian chạy đọc dữ liệu từ luồng và sau đó không thành phần dữ liệu cụ thể này sẽ bị mất (nó đã được đọc và xóa khỏi luồng và nó cũng bị mất ở phía công nhân vì thất bại).

Nhắc đến Spark documentation:

Trong khi một Spark chương trình điều khiển Truyền đang chạy, hệ thống nhận dữ liệu từ nhiều nguồn khác nhau và và chia nó thành lô. Mỗi lô dữ liệu được coi là RDD, có nghĩa là một bộ sưu tập dữ liệu song song không thay đổi. Các RDD đầu vào này được lưu trong bộ nhớ và được nhân bản thành hai nút để có khả năng chịu lỗi.

Cảnh báo trong trường hợp của bạn có nghĩa là dữ liệu đến từ luồng không được sao chép. Lý do cho điều đó có thể là bạn chạy ứng dụng chỉ với một phiên bản của nhân viên Spark hoặc chạy ở chế độ cục bộ. Cố gắng bắt đầu nhiều nhân viên Spark hơn và xem cảnh báo đã biến mất chưa.

+0

Có cách nào để ngăn không cho các WARN này được xuất ra bàn điều khiển không? –

+2

Để tắt tiếng thay đổi log4j.rootCategory = WARN, giao diện điều khiển thành log4j.rootCategory = ERROR, giao diện điều khiển trong tệp log4j.properties –

Các vấn đề liên quan