ในโมดูลนี้ คุณจะได้สร้างแอปพลิเคชัน Amazon Kinesis Data Analytics เพื่อรวบรวมข้อมูลเซนเซอร์จากฟลีตยูนิคอร์นแบบเรียลไทม์ แอปพลิเคชันนี้จะอ่านข้อมูลจากสตรีม Amazon Kinesis จากนั้นคำนวณระยะทางที่ได้ทั้งหมด คำนวณแต้มพลังชีวิตและเวทมนตร์ต่ำสุดและสูงสุดของยูนิคอร์นแต่ละตัวที่มีบน Wild Ryde และส่งออกสถิติที่รวบรวมไว้เหล่านี้ไปยังสตรีม Amazon Kinesis ในแต่ละนาที

สถาปัตยกรรมของโมดูลนี้ประกอบไปด้วยแอปพลิเคชัน Amazon Kinesis Data Analytics, สตรีม Amazon Kinesis ต้นทางและปลายทาง และ ไคลเอ็นต์ บรรทัดคำสั่งของตัวผลิตและคอนซูเมอร์

แอปพลิเคชัน Amazon Kinesis Data Analytics จะประมวลผลข้อมูลจากสตรีม Amazon Kinesis ต้นทางที่เราสร้างขึ้นในโมดูลก่อนหน้าและรวบรวมข้อมูลเหล่านั้นไว้ในแต่ละนาที ในแต่ละนาที แอปพลิเคชันนี้จะส่งออกข้อมูลไม่ว่าจะเป็นระยะทางที่ได้ในนาทีล่าสุด และค่าที่อ่านได้ของแต้มพลังชีวิตและเวทมนตร์ต่ำสุดและสูงสุดของยูนิคอร์นแต่ละตัวในฟลีตของเรา แต้มเหล่านี้จะถูกส่งไปยังสตรีม Amazon Kinesis ปลายทางเพื่อให้ส่วนอื่นๆ ในระบบได้ประมวลผลต่อไป

ระยะเวลาที่ใช้ในการศึกษาโมดูล: 20 นาที

บริการที่ใช้:
• Amazon Kinesis Data Streams
• Amazon Kinesis Data Analytics


  • ขั้นตอนที่ 1 สร้างสตรีม Amazon Kinesis

    ใช้งานคอนโซล Amazon Kinesis Data Stream เพื่อสร้างสตรีมใหม่ที่มีชื่อว่า wildrydes-summary ที่ 1 ชาร์ด


    ก. จาก AWS Management Console ให้เลือก Services (บริการ) จากนั้นเลือก Kinesis ใต้ส่วน Analytics

    ข. เลือก Get started (เริ่มต้นใช้งาน) หากหน้าจอแนะนำปรากฏขึ้น

    ค. เลือก Create data stream (สร้างสตรีมข้อมูล)

    ง. ป้อนคำว่า wildrydes-summary ในส่วน Kinesis stream name และป้อน 1 ที่ส่วน Number of shards (จำนวนชาร์ด) จากนั้นเลือก Create Kinesis stream (สร้างสตรีม Kinesis)

    จ. สตรีม Kinesis ของคุณจะมีสถานะเป็น ACTIVE (พร้อมใช้งาน) และพร้อมที่จะจัดเก็บข้อมูลการสตรีมแบบเรียลไทม์ภายใน 60 วินาที

  • ขั้นตอนที่ 2 สร้างแอปพลิเคชัน Amazon Kinesis Data Analytics

    สร้างแอปพลิเคชัน Amazon Kinesis Data Analytics ซึ่งจะอ่านข้อมูลจากสตรีม wildrydes ที่สร้างในโมดูลก่อนหน้าและส่งออกอ็อบเจ็กต์ JSON พร้อมข้อมูลคุณลักษณะต่อไปนี้ในแต่ละนาที:

    ชื่อ ชื่อยูนิคอร์น
    เวลาสถานะ ROWTIME ที่ได้จาก Amazon Kinesis Data Analytics
    ระยะทาง ระยะทางรวมที่ยูนิคอร์นเดินทางได้
    MinMagicPoints จุดข้อมูล ต่ำสุด ของคุณลักษณะ MagicPoints
    MaxMagicPoints จุดข้อมูล สูงสุด ของคุณลักษณะ MagicPoints
    MinHealthPoints จุดข้อมูลต่ำสุดของคุณลักษณะ HealthPoints
    MaxHealthPoints จุดข้อมูลสูงสุดของคุณลักษณะ HealthPoints

    ก. เปลี่ยนไปยังแท็บที่คุณเปิดสภาพแวดล้อม Cloud9 ของคุณเอาไว้

    ข. เปิดใช้งานตัวผลิตเพื่อเริ่มส่งออกข้อมูลเซนเซอร์ไปยังสตรีม

    ./producer

    การผลิตข้อมูลเซนเซอร์อย่างสม่ำเสมอขณะที่เรากำลังสร้างแอปพลิเคชันจะช่วยให้ Amazon Kinesis Data Analytics สามารถตรวจจับสคีมาของเราได้โดยอัตโนมัติ

    ค. จาก AWS Management Console ให้เลือก Services (บริการ) จากนั้นเลือก Kinesis ใต้ส่วน Analytics

    ง. เลือก Create analytics application (สร้างแอปพลิเคชันการวิเคราะห์)

    จ. ป้อนคำว่า wildrydes ไปที่ส่วน Application name จากนั้นเลือก Create application (สร้างแอปพลิเคชัน)

    ฉ. เลือก Connect streaming data (เชื่อมต่อข้อมูลการสตรีม)

    ช. เลือก wildrydes จากส่วน Kinesis stream

    ซ. เลื่อนลงมาคลิก Discover schema (สำรวจสคีมา) รอสักครู่ จากนั้นตรวจสอบให้แน่ใจว่าระบบได้ค้นพบสคีมาอย่างถูกต้องแล้วโดยอัตโนมัติ

    ตรวจสอบให้แน่ใจว่าสคีมาที่ค้นพบโดยอัตโนมัตินั้นมีข้อมูลต่อไปนี้:

     

    คอลัมน์ ประเภทข้อมูล
    ระยะทาง DOUBLE
    HealthPoints INTERGER
    ละติจูด DOUBLE
    ลองจิจูด DOUBLE
    MagicPoints INTEGER
    ชื่อ VARCHAR(16)
    เวลาสถานะ TIMESTAMP

    ฌ. เลือก Save and continue (บันทึกและดำเนินการต่อ)

    ญ. เลือก Go to SQL editor (ไปยังตัวแก้ไข SQL) เมื่อเลือกแล้ว เซสชันแบบอินเทอร์แอคทีฟจะปรากฏขึ้นมาให้เราได้สร้างชุดคำถามบนสตรีม Amazon Kinesis แบบเรียลไทม์ของเรา

    ฎ. เลือก Yes, start application (ใช่ เริ่มแอปพลิเคชัน) แอปพลิเคชันจะเริ่มต้นทำงานภายใน 30-90 วินาที

    ฏ. คัดลอกและวางชุดคำถาม SQL ต่อไปนี้ในตัวแก้ไข 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";

    (คลิกเพื่อซูม)

    ฐ. เลือก Save and run SQL (บันทึกและเริ่มการทำงาน SQL) ในแต่ละนาที คุณจะเห็นแถวข้อมูลที่รวบรวมไว้ปรากฏมากขึ้นเรื่อยๆ รอให้แถวข้อมูลปรากฏ

    ฑ. คลิกลิงก์ Destination (ปลายทาง)

    ฒ. เลือก Connect to a destination (เชื่อมต่อไปยังปลายทาง)

    ณ. เลือก wildrydes-summary จากส่วน Kinesis stream

    ด. เลือก DESTINATION_SQL_STREAM จากส่วน In-application stream name

    ต. เลือก Save and continue (บันทึกและดำเนินการต่อ)

    (คลิกเพื่อซูม)

  • ขั้นตอนที่ 3 อ่านข้อความจากสตรีม

    ใช้คอนซูเมอร์บรรทัดคำสั่งเพื่อดูข้อความจากสตรีม Kinesis เพื่อดูข้อมูลที่รวบรวมไว้ที่ถูกส่งออกในแต่ละนาที


    ก. เปลี่ยนไปยังแท็บที่คุณเปิดสภาพแวดล้อม Cloud9 ของคุณเอาไว้

    ข. เปิดใช้งานคอนซูเมอร์เพื่อเริ่มอ่านข้อมูลเซนเซอร์จากสตรีม

    ./consumer -stream wildrydes-summary

    คอนซูเมอร์ดังกล่าวจะพิมพ์ข้อความที่ถูกส่งมาจากแอปพลิเคชัน Kinesis Data Analytics ในแต่ละนาที

    {
      "Name": "Shadowfax",
      "StatusTime": "2018-03-18 03:20:00.000",
      "Distance": 362,
      "MinMagicPoints": 170,
      "MaxMagicPoints": 172,
      "MinHealthPoints": 146,
      "MaxHealthPoints": 149
    }
  • ขั้นตอนที่ 4 ทดสอบกับตัวผลิต

    หยุดและเริ่มตัวผลิตขณะดูแดชบอร์ดและผู้บริโภค เริ่มต้นการทำงานของตัวผลิตหลายหน่วยพร้อมกันด้วยชื่อยูนิคอร์นที่แตกต่างกัน


    ก. เปลี่ยนไปยังแท็บที่คุณเปิดสภาพแวดล้อม Cloud9 ของคุณเอาไว้

    ข. หยุดการทำงานของตัวผลิตโดยกด Ctrl+C และสังเกตข้อความแจ้งการหยุด

    ค. เริ่มการทำงานของตัวผลิตอีกครั้งและสังเกตข้อความแจ้งการดำเนินการต่อ

    ง. กดปุ่ม (+) และคลิก New Terminal (เทอร์มินัลใหม่) เพื่อเปิดแท็บเทอร์มินัลใหม่

    จ. เริ่มการทำงานของอีกอินสแตนซ์หนึ่งของตัวผลิตในแท็บใหม่ ป้อนชื่อยูนิคอร์นเฉพาะและสังเกตจุดข้อมูลสำหรับยูนิคอร์น ทั้งสอง ในเอาต์พุตของคอนซูเมอร์

    ./producer -name Bucephalus

    ฉ. ตรวจสอบให้แน่ใจว่าคุณเห็นยูนิคอร์นหลายตัวในเอาต์พุต

    {
        "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
    }
  • สรุปและคำแนะนำ


    🔑 Amazon Kinesis Data Analytics ช่วยให้คุณสามารถสืบค้นข้อมูลการสตรีมหรือสร้างแอปพลิเคชันการสตรีมขึ้นทั้งหมดได้โดยใช้ SQL คุณจะได้รับข้อมูลเชิงลึกที่นำไปใช้ได้จริงและตอบสนองต่อความต้องการทางธุรกิจและลูกค้าได้อย่างทันท่วงที

    🔧 ในโมดูลนี้ คุณจะสามารถสร้างแอปพลิเคชัน Kinesis Data Analytics ที่อ่านข้อมูลจากสตรีม Kinesis ของข้อมูลยูนิคอร์นและส่งออกแถวสรุปข้อมูลในแต่ละนาทีได้สำเร็จ

ในโมดูลหน้า คุณจะได้ใช้งาน AWS Lambda เพื่อประมวลผลข้อมูลจาก wildrydes ที่สตรีม Amazon Kinesis สร้างขึ้นก่อนหน้านี้ เราจะสร้างและกำหนดค่าฟังก์ชัน Lambda เพื่ออ่านข้อมูลจากสตรีมและเขียนบันทึกข้อมูลไปยังตาราง Amazon DynamoDB เมื่อมีข้อมูลเข้ามา