Trong mô-đun này, bạn sẽ tạo ứng dụng Amazon Kinesis Data Analytics để tổng hợp dữ liệu cảm biến từ đội kỳ lân trong thời gian thực. Ứng dụng sẽ đọc thông tin từ luồng Amazon Kinesis, tính toán tổng quãng đường di chuyển, điểm phép thuật (magic point) và điểm sức khỏe (health point) tối thiểu cũng như tối đa cho mỗi chú kỳ lân hiện có trong Wild Ryde, rồi xuất các số liệu thống kê tổng hợp này sang một luồng Amazon Kinesis theo từng phút.

Kiến trúc cho mô-đun này gồm một ứng dụng Amazon Kinesis Data Analytics, luồng Amazon Kinesis gốc và đích, cũng như ứng dụng khách tạo dữ liệu và sử dụng dữ liệu với giao diện dòng lệnh.

Ứng dụng Amazon Kinesis Data Analytics xử lý dữ liệu từ luồng Amazon Kinesis gốc mà chúng ta đã tạo trong mô-đun trước và tổng hợp dữ liệu theo từng phút. Mỗi phút, ứng dụng sẽ tạo ra dữ liệu gồm tổng quãng đường di chuyển trong phút vừa qua, cũng như dữ liệu đọc tối đa và tối thiểu của điểm phép thuật và điểm sức khỏe cho mỗi chú kỳ lân trong đội của chúng tôi. Các điểm dữ liệu này sẽ được gửi đến luồng Amazon Kinesis đích để các thành phần khác trong hệ thống của bạn xử lý.

Thời gian hoàn thành mô-đun: 20 phút

Dịch vụ đã sử dụng:
• Amazon Kinesis Data Streams
• Amazon Kinesis Data Analytics


  • Bước 1. Tạo luồng Amazon Kinesis

    Sử dụng bảng điều khiển Amazon Kinesis Data Streams để tạo luồng mới có tên wildrydes-summary với 1 phân đoạn.


    a. Chuyển đến Bảng điều khiển quản lý AWS, nhấp vào Dịch vụ rồi chọn Kinesis trong phần Phân tích.

    b. Chọn Bắt đầu nếu bạn được nhắc với một màn hình giới thiệu.

    c. Chọn Tạo luồng dữ liệu.

    d. Nhập wildrydes-summary vào Tên luồng Kinesis và 1 vào Số lượng phân mảnh, rồi chọn Tạo luồng Kinesis.

    e. Trong vòng 60 giây, luồng Kinesis của bạn sẽ có trạng thái ĐANG HOẠT ĐỘNG và sẵn sàng lưu trữ dữ liệu phát trực tuyến theo thời gian thực.

  • Bước 2. Tạo ứng dụng Amazon Kinesis Data Analytics

    Dựng một ứng dụng Amazon Kinesis Data Analytics. Ứng dụng này đọc từ luồng wildrydes được dựng trong mô-đun trước và mỗi phút tạo ra một đối tượng JSON với các thuộc tính sau:

    Tên Tên kỳ lân
    StatusTime ROWTIME do Amazon Kinesis Data Analytics cung cấp
    Khoảng cách Tổng quãng đường di chuyển của kỳ lân
    MinMagicPoints Điểm dữ liệu tối thiểu của thuộc tính  MagicPoints
    MaxMagicPoints Điểm dữ liệu tối đa của thuộc tính  MagicPoints
    MinHealthPoints Điểm dữ liệu tối thiểu của thuộc tính HealthPoints
    MaxHealthPoints Điểm dữ liệu tối đa của thuộc tính HealthPoints

    a. Chuyển sang tab nơi bạn có môi trường Cloud9 đang mở.

    b. Chạy ứng dụng tạo dữ liệu để bắt đầu tạo dữ liệu cảm biến cho luồng.

    ./producer

    Việc chủ động tạo ra dữ liệu cảm biến trong khi chúng ta dựng ứng dụng cho phép Amazon Kinesis Data Analytics tự động phát hiện sơ đồ của chúng ta.

    c. Chuyển đến Bảng điều khiển quản lý AWS, nhấp vào Dịch vụ rồi chọn Kinesis trong phần Phân tích.

    d. Chọn Tạo ứng dụng phân tích.

    e. Nhập wildrydes vào Tên ứng dụng rồi chọn Tạo ứng dụng.

    f. Chọn Kết nối dữ liệu phát trực tuyến.

    g. Chọn wildrydes từ Luồng Kinesis.

    h. Cuộn xuống và nhấp vào Khám phá sơ đồ, chờ một thời gian và đảm bảo rằng sơ đồ được tự động khám phá đúng cách.

    Đảm bảo rằng sơ đồ được tự động khám phá có:

     

    Cột Loại dữ liệu
    Khoảng cách KÉP
    HealthPoints SỐ NGUYÊN
    Vĩ độ KÉP
    Kinh độ KÉP
    MagicPoints SỐ NGUYÊN
    Tên VARCHAR (16)
    StatusTime DẤU THỜI GIAN

    i. Chọn Lưu và tiếp tục.

    j. Chọn Chuyển đến Trình biên tập SQL. Thao tác này sẽ mở một phiên truy vấn tương tác, nơi chúng ta có thể xây dựng một truy vấn dựa trên luồng Amazon Kinesis theo thời gian thực.

    k. Chọn Có, bắt đầu ứng dụng. Sẽ mất 30-90 giây để ứng dụng bắt đầu.

    l. Sao chép và dán truy vấn SQL sau vào trình biên tập SQL:

     

    CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" (
      "Name"                VARCHAR(16),
      "StatusTime"          TIMESTAMP,
      "Distance"            SMALLINT,
      "MinMagicPoints"      SMALLINT,
      "MaxMagicPoints"      SMALLINT,
      "MinHealthPoints"     SMALLINT,
      "MaxHealthPoints"     SMALLINT
    );
    
    CREATE OR REPLACE PUMP "STREAM_PUMP" AS
      INSERT INTO "DESTINATION_SQL_STREAM"
        SELECT STREAM "Name", "ROWTIME", SUM("Distance"), MIN("MagicPoints"),
                      MAX("MagicPoints"), MIN("HealthPoints"), MAX("HealthPoints")
        FROM "SOURCE_SQL_STREAM_001"
        GROUP BY FLOOR("SOURCE_SQL_STREAM_001"."ROWTIME" TO MINUTE), "Name";

    (nhấp để thu phóng)

    m. Chọn Lưu và chạy SQL. Mỗi phút, bạn sẽ thấy một số hàng xuất hiện và chứa dữ liệu tổng hợp. Hãy chờ các hàng xuất hiện.

    n. Nhấp vào liên kết Đích.

    o. Chọn Kết nối với một luồng đích.

    p. Chọn wildrydes-summary từ Luồng Kinesis.

    q. Chọn DESTINATION_SQL_STREAM từ Tên luồng trong ứng dụng.

    r. Chọn Lưu và tiếp tục.

    (nhấp để thu phóng)

  • Bước 3. Đọc thông báo từ luồng

    Sử dụng ứng dụng sử dụng dữ liệu dạng dòng lệnh để xem thông báo từ luồng Kinesis và xem dữ liệu tổng hợp được gửi mỗi phút.


    a. Chuyển sang tab nơi bạn có môi trường Cloud9 đang mở.

    b. Chạy ứng dụng sử dụng dữ liệu để bắt đầu đọc dữ liệu cảm biến từ luồng.

    ./consumer -stream wildrydes-summary

    Ứng dụng sử dụng dữ liệu sẽ in thông báo do ứng dụng Kinesis Data Analytics gửi mỗi phút:

    {
      "Name": "Shadowfax",
      "StatusTime": "2018-03-18 03:20:00.000",
      "Distance": 362,
      "MinMagicPoints": 170,
      "MaxMagicPoints": 172,
      "MinHealthPoints": 146,
      "MaxHealthPoints": 149
    }
  • Bước 4. Thử nghiệm với ứng dụng tạo dữ liệu

    Dừng và bắt đầu trình sản xuất trong khi theo dõi bảng thông tin và trình tiêu thụ. Bắt đầu nhiều trình sản xuất với nhiều tên kỳ lân khác nhau.


    a. Chuyển sang tab đang mở môi trường Cloud9.

    b. Dừng ứng dụng tạo dữ liệu bằng cách nhấn tổ hợp phím Control + C và chú ý các thông báo dừng.

    c. Bắt đầu lại ứng dụng tạo dữ liệu và chú ý các thông báo tiếp tục.

    d. Nhấn nút (+) và nhấp vào Cửa sổ dòng lệnh mới để mở tab cửa sổ dòng lệnh mới.

    e. Bắt đầu phiên bản khác của ứng dụng tạo dữ liệu trong tab mới. Cung cấp tên kỳ lân cụ thể và chú ý tới điểm dữ liệu cho cả hai kỳ lân trong kết quả của ứng dụng sử dụng dữ liệu:

    ./producer -name Bucephalus

    f. Xác minh rằng bạn thấy nhiều kỳ lân trong kết quả:

    {
        "Name": "Shadowfax",
        "StatusTime": "2018-03-18 03:20:00.000",
        "Distance": 362,
        "MinMagicPoints": 170,
        "MaxMagicPoints": 172,
        "MinHealthPoints": 146,
        "MaxHealthPoints": 149
    }
    {
        "Name": "Bucephalus",
        "StatusTime": "2018-03-18 03:20:00.000",
        "Distance": 1773,
        "MinMagicPoints": 140,
        "MaxMagicPoints": 148,
        "MinHealthPoints": 132,
        "MaxHealthPoints": 138
    }
  • Tóm tắt và Mẹo


    🔑 Amazon Kinesis Data Analytics cho phép bạn truy vấn dữ liệu phát trực tuyến hoặc dựng toàn bộ ứng dụng phát trực tuyến bằng SQL. Từ đó, bạn có thể có được thông tin chuyên sâu khả thi và phản hồi nhanh chóng trước nhu cầu của doanh nghiệp cũng như khách hàng.

    🔧 Trong mô-đun này, bạn đã tạo ứng dụng Kinesis Data Analytics đọc được thông tin từ luồng Kinesis của dữ liệu kỳ lân và tạo ra hàng tóm tắt theo từng phút.

Trong mô-đun tiếp theo, bạn sẽ sử dụng AWS Lambda để xử lý dữ liệu từ luồng Amazon Kinesis  wildrydes  được tạo trước đó. Chúng ta sẽ tạo và đặt cấu hình một hàm Lambda để đọc từ luồng và ghi bản ghi đến bảng Amazon DynamoDB khi kỳ lân đến.