เรียกใช้ไปป์ไลน์การประมวลผลข้อความข้อมูลขนาดใหญ่ใน Cloud Dataflow

1. ภาพรวม

Cloud-Dataflow.png

Dataflow คืออะไร

Dataflow เป็นบริการที่มีการจัดการสำหรับการทำงานในรูปแบบการประมวลผลข้อมูลหลากหลายรูปแบบ เอกสารในเว็บไซต์นี้จะแสดงวิธีทำให้ไปป์ไลน์การประมวลผลข้อมูลแบบกลุ่มและการสตรีมมิงใช้งานได้โดยใช้ Dataflow รวมถึงวิธีการใช้ฟีเจอร์บริการ

Apache Beam SDK เป็นโมเดลการเขียนโปรแกรมโอเพนซอร์สที่ให้คุณพัฒนาได้ทั้งไปป์ไลน์แบบกลุ่มและสตรีมมิง คุณสร้างไปป์ไลน์ด้วยโปรแกรม Apache Beam แล้วเรียกใช้ไปป์ไลน์ในบริการ Dataflow เอกสารประกอบเกี่ยวกับ Apacheบีมให้ข้อมูลแนวคิดเชิงลึกและข้อมูลอ้างอิงสำหรับโมเดลการเขียนโปรแกรม Apacheบีม, SDK และโปรแกรมเรียกใช้อื่นๆ

การสตรีมการวิเคราะห์ข้อมูลอย่างรวดเร็ว

Dataflow ช่วยให้การพัฒนาไปป์ไลน์ข้อมูลสตรีมมิงเป็นไปอย่างง่ายดายและรวดเร็วโดยมีเวลาในการตอบสนองของข้อมูลต่ำลง

ลดความซับซ้อนของการดำเนินการและการจัดการ

อนุญาตให้ทีมมุ่งเน้นที่การเขียนโปรแกรมแทนการจัดการคลัสเตอร์เซิร์ฟเวอร์เนื่องจากแนวทางแบบ Serverless ของ Dataflow นำค่าใช้จ่ายในการดำเนินการออกจากภาระงานด้านวิศวกรรมข้อมูล

ลดต้นทุนรวมในการเป็นเจ้าของ

การปรับขนาดทรัพยากรอัตโนมัติควบคู่กับความสามารถในการประมวลผลแบบกลุ่มที่เพิ่มประสิทธิภาพต้นทุนทำให้ Dataflow มีขีดความสามารถที่ไม่จำกัดในระบบเสมือนจริงในการจัดการภาระงานตามฤดูกาลและพุ่งสูงโดยไม่มีการใช้จ่ายมากเกินไป

ฟีเจอร์สำคัญ

การจัดการทรัพยากรอัตโนมัติและการจัดสรรงานแบบไดนามิกใหม่

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

การปรับขนาดอัตโนมัติในแนวนอน

การปรับขนาดทรัพยากรผู้ปฏิบัติงานอัตโนมัติในแนวนอนเพื่ออัตราการส่งข้อมูลที่ดีที่สุดช่วยให้ประสิทธิภาพโดยรวมดีขึ้น

การกำหนดราคาการกำหนดเวลาทรัพยากรที่ยืดหยุ่นสำหรับการประมวลผลแบบกลุ่ม

เพื่อการประมวลผลที่มีความยืดหยุ่นในการกำหนดตารางเวลางาน เช่น งานข้ามคืน การกำหนดเวลาทรัพยากรที่ยืดหยุ่น (FlexRS) จะเสนอราคาต่ำกว่าสำหรับการประมวลผลแบบกลุ่ม งานที่ยืดหยุ่นเหล่านี้จะอยู่ในคิวที่มีการรับประกันว่าจะมีการดึงข้อมูลเพื่อดำเนินการได้ภายใน 6 ชั่วโมง

บทแนะนำนี้ปรับมาจาก https://cloud.google.com/dataflow/docs/quickstarts/quickstart-java-maven

สิ่งที่คุณจะได้เรียนรู้

  • วิธีสร้างโปรเจ็กต์ Maven ด้วย Apacheบีม โดยใช้ Java SDK
  • เรียกใช้ไปป์ไลน์ตัวอย่างโดยใช้คอนโซล Google Cloud Platform
  • วิธีลบที่เก็บข้อมูล Cloud Storage ที่เกี่ยวข้องและเนื้อหาในที่เก็บข้อมูล

สิ่งที่คุณต้องมี

  • เบราว์เซอร์ เช่น Chrome หรือ Firefox

คุณจะใช้บทแนะนำนี้อย่างไร

อ่านเท่านั้น อ่านและทำแบบฝึกหัด

คุณจะให้คะแนนความพึงพอใจสำหรับประสบการณ์การใช้บริการ Google Cloud Platform อย่างไร

มือใหม่ ระดับกลาง ผู้ชำนาญ

2. การตั้งค่าและข้อกำหนด

การตั้งค่าสภาพแวดล้อมตามเวลาที่สะดวก

  1. ลงชื่อเข้าใช้ Cloud Console และสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ (หากยังไม่มีบัญชี Gmail หรือ G Suite คุณต้องสร้างบัญชี)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

โปรดจดจำรหัสโปรเจ็กต์ ซึ่งเป็นชื่อที่ไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมด (ชื่อด้านบนมีคนใช้แล้ว และจะใช้ไม่ได้ ขออภัย) และจะมีการอ้างอิงใน Codelab ว่า PROJECT_ID ในภายหลัง

  1. ถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร Google Cloud

การใช้งาน Codelab นี้น่าจะไม่มีค่าใช้จ่ายใดๆ หากมี ตรวจสอบว่าคุณได้ทำตามวิธีการใน "การล้างข้อมูล" ซึ่งจะแนะนำคุณเกี่ยวกับวิธีปิดทรัพยากรเพื่อไม่ให้มีการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ ผู้ใช้ใหม่ของ Google Cloud จะมีสิทธิ์เข้าร่วมโปรแกรมทดลองใช้ฟรี$300 USD

เปิดใช้ API

คลิกไอคอนเมนูที่ด้านซ้ายบนของหน้าจอ

2bfc27ef9ba2ec7d.png

เลือก API และ บริการ > แดชบอร์ดจากเมนูแบบเลื่อนลง

5b65523a6cc0afa6.png

เลือก + เปิดใช้ API และบริการ

81ed72192c0edd96.png

ค้นหา "Compute Engine" ในช่องค้นหา คลิกที่ "Compute Engine API" ในรายการผลลัพธ์ที่ปรากฏขึ้น

3f201e991c7b4527.png

คลิกเปิดใช้ในหน้า Google Compute Engine

ac121653277fa7bb.png

เมื่อเปิดใช้แล้ว ให้คลิกลูกศรเพื่อย้อนกลับ

จากนั้นค้นหาและเปิดใช้ API ต่อไปนี้ด้วย

  • Cloud Dataflow
  • Stackdriver
  • Cloud Storage
  • JSON ของ Cloud Storage
  • BigQuery
  • Cloud Pub/Sub
  • Cloud Datastore
  • Cloud Resource Manager API

3. สร้างที่เก็บข้อมูล Cloud Storage ใหม่

ในคอนโซล Google Cloud Platform ให้คลิกไอคอนเมนูที่ด้านซ้ายบนของหน้าจอ

2bfc27ef9ba2ec7d.png

เลื่อนลงแล้วเลือก Cloud Storage > เบราว์เซอร์ในส่วนย่อยพื้นที่เก็บข้อมูล

2b6c3a2a92b47015.png

ตอนนี้คุณควรเห็นเบราว์เซอร์ Cloud Storage และในกรณีที่ใช้โปรเจ็กต์ที่ไม่มีที่เก็บข้อมูล Cloud Storage ในขณะนี้ คุณจะเห็นคำเชิญให้สร้างที่เก็บข้อมูลใหม่ กดปุ่มสร้างที่เก็บข้อมูลเพื่อสร้างที่เก็บข้อมูล

a711016d5a99dc37.png

ป้อนชื่อที่เก็บข้อมูล ชื่อที่เก็บข้อมูลต้องไม่ซ้ำกันใน Cloud Storage ทั้งหมดตามหมายเหตุของกล่องโต้ตอบ ดังนั้น หากเลือกชื่อที่ชัดเจน เช่น "test" (ทดสอบ) คุณอาจพบว่ามีผู้อื่นสร้างที่เก็บข้อมูลที่มีชื่อนั้นอยู่แล้วและจะได้รับข้อผิดพลาด

นอกจากนี้ ยังมีกฎบางข้อเกี่ยวกับอักขระที่ได้รับอนุญาตในชื่อที่เก็บข้อมูลด้วย หากคุณขึ้นต้นและลงท้ายชื่อที่เก็บข้อมูลด้วยตัวอักษรหรือตัวเลข และใช้เฉพาะเครื่องหมายขีดกลางตรงกลางก็ไม่มีปัญหา หากพยายามใช้สัญลักษณ์พิเศษ หรือพยายามขึ้นต้นหรือสิ้นสุดชื่อที่เก็บข้อมูลด้วยอักขระอื่นที่ไม่ใช่ตัวอักษรหรือตัวเลข กล่องโต้ตอบจะแจ้งเตือนกฎดังกล่าว

3a5458648cfe3358.png

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

3bda986ae88c4e71.png

แน่นอนว่าชื่อที่เก็บข้อมูลที่คุณเห็นจะแตกต่างกัน เนื่องจากชื่อต้องไม่ซ้ำกันในทุกโปรเจ็กต์

4. เริ่มต้น Cloud Shell

เปิดใช้งาน Cloud Shell

  1. คลิกเปิดใช้งาน Cloud Shell กริ๊งๆๆๆ จาก Cloud Console

zlNW0HehB_AFW1qZ4AyebSQUdWm95n7TbnOr7UVm3j9dFcg6oWApJRlC0jnU1Mvb-IQp-trP1Px8xKNwt6o3pP6fyih947sEhOFI4IRF0W7WZk6hFqZDUGXQQXrw21GuMm2ecHrbzQ

หากคุณไม่เคยเริ่มต้นใช้งาน Cloud Shell มาก่อน คุณจะเห็นหน้าจอตรงกลาง (ครึ่งหน้าล่าง) ซึ่งอธิบายว่านี่คืออะไร หากเป็นเช่นนั้น ให้คลิกดำเนินการต่อ (คุณจะไม่เห็นการดำเนินการนี้อีก) หน้าจอแบบครั้งเดียวมีลักษณะดังนี้

kEPbNAo_w5C_pi9QvhFwWwky1cX8hr_xEMGWySNIoMCdi-Djx9AQRqWn-__DmEpC7vKgUtl-feTcv-wBxJ8NwzzAp7mY65-fi2LJo4twUoewT1SUjd6Y3h81RG3rKIkqhoVlFR-G7w

การจัดสรรและเชื่อมต่อกับ Cloud Shell ใช้เวลาเพียงไม่กี่นาที

pTv5mEKzWMWp5VBrg2eGcuRPv9dLInPToS-mohlrqDASyYGWnZ_SwE-MzOWHe76ZdCSmw0kgWogSJv27lrQE8pvA5OD6P1I47nz8vrAdK7yR1NseZKJvcxAZrPb8wRxoqyTpD-gbhA

เครื่องเสมือนนี้เต็มไปด้วยเครื่องมือการพัฒนาทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักขนาด 5 GB ที่ทำงานอย่างต่อเนื่องใน Google Cloud ซึ่งจะช่วยเพิ่มประสิทธิภาพของเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก งานส่วนใหญ่ใน Codelab นี้สามารถทำได้โดยใช้เบราว์เซอร์หรือ Chromebook เท่านั้น

เมื่อเชื่อมต่อกับ Cloud Shell คุณควรเห็นว่าได้รับการตรวจสอบสิทธิ์แล้ว และโปรเจ็กต์ได้รับการตั้งค่าเป็นรหัสโปรเจ็กต์แล้ว

  1. เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อยืนยันว่าคุณได้รับการตรวจสอบสิทธิ์แล้ว
gcloud auth list

เอาต์พุตจากคำสั่ง

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
gcloud config list project

เอาต์พุตจากคำสั่ง

[core]
project = <PROJECT_ID>

หากไม่ใช่ ให้ตั้งคำสั่งด้วยคำสั่งนี้

gcloud config set project <PROJECT_ID>

เอาต์พุตจากคำสั่ง

Updated property [core/project].

5. สร้างโปรเจ็กต์ Maven

หลังจากเปิดตัว Cloud Shell แล้ว ให้เริ่มต้นด้วยการสร้างโปรเจ็กต์ Maven โดยใช้ Java SDK สำหรับ Apacheบีม

Apache Beam เป็นโมเดลการเขียนโปรแกรมโอเพนซอร์สสำหรับไปป์ไลน์ข้อมูล คุณกำหนดไปป์ไลน์เหล่านี้ด้วยโปรแกรม Apacheบีม และสามารถเลือกตัวเรียกใช้ เช่น Dataflow เพื่อเรียกใช้ไปป์ไลน์

เรียกใช้คำสั่ง mvn archetype:generate ใน Shell ดังนี้

  mvn archetype:generate \
     -DarchetypeGroupId=org.apache.beam \
     -DarchetypeArtifactId=beam-sdks-java-maven-archetypes-examples \
     -DarchetypeVersion=2.46.0 \
     -DgroupId=org.example \
     -DartifactId=first-dataflow \
     -Dversion="0.1" \
     -Dpackage=org.apache.beam.examples \
     -DinteractiveMode=false

หลังจากเรียกใช้คำสั่งแล้ว คุณควรเห็นไดเรกทอรีใหม่ที่ชื่อ first-dataflow ใต้ไดเรกทอรีปัจจุบันของคุณ first-dataflow มีโปรเจ็กต์ Maven ที่มี Cloud Dataflow SDK สำหรับ Java และไปป์ไลน์ตัวอย่าง

6. เรียกใช้ไปป์ไลน์การประมวลผลข้อความบน Cloud Dataflow

เริ่มต้นด้วยการบันทึกรหัสโปรเจ็กต์และชื่อที่เก็บข้อมูล Cloud Storage เป็นตัวแปรสภาพแวดล้อม โดยดำเนินการดังกล่าวได้ใน Cloud Shell โปรดแทนที่ <your_project_id> ด้วยรหัสโปรเจ็กต์ของคุณเอง

 export PROJECT_ID=<your_project_id>

ตอนนี้เราจะทำเช่นเดียวกันนี้กับที่เก็บข้อมูล Cloud Storage อย่าลืมใช้ชื่อที่ไม่ซ้ำกันที่คุณใช้สร้างที่เก็บข้อมูลในขั้นตอนก่อนหน้าแทน <your_bucket_name>

 export BUCKET_NAME=<your_bucket_name>

เปลี่ยนเป็นไดเรกทอรี first-dataflow/

 cd first-dataflow

เรากำลังเรียกใช้ไปป์ไลน์ที่เรียกว่า WordCount ซึ่งจะอ่านข้อความ แปลงบรรทัดข้อความให้เป็นโทเค็น และทำการนับความถี่ของคำแต่ละคำเหล่านั้น ก่อนอื่น เราจะเรียกใช้ไปป์ไลน์ และในขณะที่ระบบทำงานอยู่ เราจะดูว่าเกิดอะไรขึ้นในแต่ละขั้นตอน

เริ่มไปป์ไลน์โดยเรียกใช้คำสั่ง mvn compile exec:java ในหน้าต่าง Shell หรือหน้าต่างเทอร์มินัล สำหรับอาร์กิวเมนต์ --project, --stagingLocation, และ --output คำสั่งด้านล่างจะอ้างอิงตัวแปรสภาพแวดล้อมที่คุณตั้งค่าไว้ก่อนหน้าในขั้นตอนนี้

 mvn compile exec:java \
      -Pdataflow-runner compile exec:java \
      -Dexec.mainClass=org.apache.beam.examples.WordCount \
      -Dexec.args="--project=${PROJECT_ID} \
      --stagingLocation=gs://${BUCKET_NAME}/staging/ \
      --output=gs://${BUCKET_NAME}/output \
      --runner=DataflowRunner \
      --region=us-central1 \
      --gcpTempLocation=gs://${BUCKET_NAME}/temp"

ลองหางานในรายการงานในขณะที่งานกำลังดำเนินอยู่

เปิด UI เว็บ Cloud Dataflow ในคอนโซล Google Cloud Platform คุณควรจะเห็นงานนับคำที่มีสถานะกำลังทำงาน ดังนี้

3623be74922e3209.png

ตอนนี้ มาดูพารามิเตอร์ไปป์ไลน์กัน เริ่มด้วยการคลิกที่ชื่องานของคุณ

816d8f59c72797d7.png

เมื่อเลือกงาน คุณจะดูกราฟการดำเนินการได้ กราฟการดำเนินการของไปป์ไลน์จะแสดงการแปลงแต่ละรายการในไปป์ไลน์ในรูปแบบกล่องที่มีชื่อการแปลงและข้อมูลสถานะบางอย่าง คุณสามารถคลิก Carat ที่มุมขวาบนของแต่ละขั้นตอนเพื่อดูรายละเอียดเพิ่มเติม:

80a972dd19a6f1eb.png

ดูว่าไปป์ไลน์แปลงข้อมูลในแต่ละขั้นตอนอย่างไร

  • อ่าน: ในขั้นตอนนี้ ไปป์ไลน์จะอ่านจากแหล่งที่มาอินพุต ในกรณีนี้เป็นไฟล์ข้อความจาก Cloud Storage ที่มีข้อความทั้งหมดของบทละครของเชกสเปียร์เรื่อง King Lear ไปป์ไลน์จะอ่านไฟล์ทีละบรรทัดและส่งออกแต่ละ PCollection โดยที่แต่ละบรรทัดในไฟล์ข้อความเป็นองค์ประกอบในคอลเล็กชัน
  • CountWords: ขั้นตอน CountWords มี 2 ส่วน ขั้นแรก เครื่องมือจะใช้ฟังก์ชัน Do คู่ขนาน (ParDo) ที่ชื่อ ExtractWords เพื่อแปลงแต่ละบรรทัดเป็นแต่ละคำเป็นโทเค็น เอาต์พุตของ ExtractWords เป็น PCollection ใหม่ซึ่งแต่ละองค์ประกอบเป็นคำ ขั้นตอนถัดไป Count จะใช้การแปลงที่ Java SDK จัดเตรียมไว้ให้ ซึ่งจะแสดงคู่คีย์-ค่าเมื่อคีย์เป็นคำที่ไม่ซ้ำกันและค่านี้เป็นค่าจำนวนครั้งที่เกิดขึ้น ต่อไปนี้คือวิธีการใช้ CountWords และคุณตรวจสอบไฟล์ WordCount.java แบบเต็มได้ใน GitHub
 /**
   * A PTransform that converts a PCollection containing lines of text into a PCollection of
   * formatted word counts.
   *
   * <p>Concept #3: This is a custom composite transform that bundles two transforms (ParDo and
   * Count) as a reusable PTransform subclass. Using composite transforms allows for easy reuse,
   * modular testing, and an improved monitoring experience.
   */
  public static class CountWords
      extends PTransform<PCollection<String>, PCollection<KV<String, Long>>> {
    @Override
    public PCollection<KV<String, Long>> expand(PCollection<String> lines) {

      // Convert lines of text into individual words.
      PCollection<String> words = lines.apply(ParDo.of(new ExtractWordsFn()));

      // Count the number of times each word occurs.
      PCollection<KV<String, Long>> wordCounts = words.apply(Count.perElement());

      return wordCounts;
    }
  }
  • MapElements: เรียกใช้ FormatAsTextFn ที่คัดลอกไว้ด้านล่าง ซึ่งจะจัดรูปแบบแต่ละคีย์และคู่ของค่าเป็นสตริงที่พิมพ์ได้
  /** A SimpleFunction that converts a Word and Count into a printable string. */
  public static class FormatAsTextFn extends SimpleFunction<KV<String, Long>, String> {
    @Override
    public String apply(KV<String, Long> input) {
      return input.getKey() + ": " + input.getValue();
    }
  }
  • WriteCounts: ในขั้นตอนนี้ เราจะเขียนสตริงที่พิมพ์ได้ลงในไฟล์ข้อความแบบชาร์ดหลายไฟล์

เราจะตรวจสอบผลลัพธ์ที่ได้จากไปป์ไลน์ในอีกไม่กี่นาที

ลองดูที่หน้าข้อมูลงานทางด้านขวาของกราฟ ซึ่งมีพารามิเตอร์ไปป์ไลน์ที่เรารวมไว้ในคำสั่ง mvn compile exec:java

9723815a1f5bf08b.png

208a7f0d6973acf6.png

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

a2e2800e2c6893f8.png

คุณสามารถคลิกไอคอนบันทึกที่ด้านล่างของคอนโซลเพื่อดูข้อความแสดงข้อผิดพลาดที่เฉพาะเจาะจง

23c64138a1027f8.png

แผงจะแสดงข้อความบันทึกงานที่รายงานสถานะของงานโดยรวมโดยค่าเริ่มต้น คุณสามารถใช้ตัวเลือกความรุนแรงขั้นต่ำเพื่อกรองความคืบหน้าของงานและข้อความสถานะได้

94ba42015fdafbe2.png

การเลือกขั้นตอนไปป์ไลน์ในกราฟจะเปลี่ยนมุมมองเป็นบันทึกที่สร้างขึ้นโดยโค้ดของคุณและรหัสที่สร้างขึ้นซึ่งทำงานอยู่ในขั้นตอนไปป์ไลน์

หากต้องการกลับไปที่บันทึกงาน ให้ยกเลิกการเลือกขั้นตอนโดยคลิกนอกกราฟหรือใช้ปุ่มปิดในแผงด้านขวา

คุณสามารถใช้ปุ่มบันทึกของผู้ปฏิบัติงานในแท็บบันทึกเพื่อดูบันทึกผู้ปฏิบัติงานสำหรับอินสแตนซ์ Compute Engine ที่เรียกใช้ไปป์ไลน์ บันทึกของผู้ปฏิบัติงานประกอบด้วยบรรทัดบันทึกที่โค้ดสร้างขึ้นและโค้ดที่สร้างขึ้นของ Dataflow เรียกใช้โค้ด

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

5a53c244f28d5478.png

อินเทอร์เฟซการตรวจสอบ Dataflow จะแสดงข้อความบันทึกล่าสุดเท่านั้น คุณสามารถดูบันทึกทั้งหมดโดยคลิกลิงก์การสังเกตของ Google Cloud ทางด้านขวาของแผงบันทึก

2bc704a4d6529b31.png

ข้อมูลสรุปเกี่ยวกับบันทึกประเภทต่างๆ ที่ดูได้จากหน้าการตรวจสอบ →บันทึก

  • บันทึก job-message มีข้อความระดับงานที่คอมโพเนนต์ต่างๆ ของ Dataflow สร้างขึ้น ตัวอย่างเช่น การกำหนดค่าการปรับขนาดอัตโนมัติ เมื่อผู้ปฏิบัติงานเปิดหรือปิดการทำงาน ความคืบหน้าในขั้นตอนของงาน และข้อผิดพลาดของงาน ข้อผิดพลาดระดับผู้ปฏิบัติงานที่เกิดจากรหัสผู้ใช้ที่ขัดข้องและปรากฏในบันทึกของผู้ปฏิบัติงานจะเผยแพร่ไปยังบันทึกข้อความงานด้วย
  • ผู้ปฏิบัติงาน Dataflow จะเป็นผู้สร้างบันทึกผู้ปฏิบัติงาน ผู้ปฏิบัติงานจะทำงานในไปป์ไลน์ส่วนใหญ่ (เช่น การนำ ParDos ไปใช้กับข้อมูล) บันทึกของผู้ปฏิบัติงานประกอบด้วยข้อความที่โค้ดและ Dataflow บันทึกไว้
  • บันทึก worker-startup มีอยู่ในงาน Dataflow ส่วนใหญ่และสามารถบันทึกข้อความที่เกี่ยวข้องกับกระบวนการเริ่มต้นได้ กระบวนการเริ่มต้นจะรวมถึงการดาวน์โหลด Jar ของงานจาก Cloud Storage แล้วเริ่มผู้ปฏิบัติงาน หากพบปัญหาในการเริ่มการทำงานของผู้ปฏิบัติงาน ให้ดูบันทึกเหล่านี้
  • บันทึกของ shuffler ประกอบด้วยข้อความจากผู้ปฏิบัติงานซึ่งรวมผลลัพธ์ของการดำเนินการไปป์ไลน์แบบขนาน
  • บันทึก docker และ kubelet มีข้อความที่เกี่ยวข้องกับเทคโนโลยีสาธารณะเหล่านี้ ซึ่งใช้ในผู้ปฏิบัติงานโฟลว์ข้อมูล

ในขั้นตอนถัดไป เราจะตรวจสอบว่างานของคุณสำเร็จหรือไม่

7. ตรวจสอบว่างานของคุณสำเร็จ

เปิด UI เว็บ Cloud Dataflow ในคอนโซล Google Cloud Platform

คุณควรเห็นงานนับคำที่มีสถานะกำลังทำงานในตอนแรก และตามด้วยสำเร็จ ดังนี้

4c408162416d03a2.png

งานจะใช้เวลาประมาณ 3-4 นาที

จำได้ไหมว่าเมื่อเรียกใช้ไปป์ไลน์และระบุที่เก็บข้อมูลเอาต์พุตแล้ว มาดูที่ผลลัพธ์ (เพราะไม่อยากดูว่าแต่ละคำใน King Lear เกิดขึ้นกี่ครั้ง) กลับไปที่เบราว์เซอร์ Cloud Storage ในคอนโซล Google Cloud Platform ในที่เก็บข้อมูล คุณควรเห็นไฟล์เอาต์พุตและไฟล์ชั่วคราวที่งานของคุณสร้างขึ้น

25a5d3d4b5d0b567.png

8. ปิดทรัพยากร

คุณสามารถปิดทรัพยากรได้จากคอนโซล Google Cloud Platform

เปิดเบราว์เซอร์ Cloud Storage ในคอนโซล Google Cloud Platform

2b6c3a2a92b47015.png

เลือกช่องทำเครื่องหมายข้างที่เก็บข้อมูลที่คุณสร้างขึ้น แล้วคลิกลบเพื่อลบที่เก็บข้อมูลและเนื้อหาในที่เก็บข้อมูลอย่างถาวร

2f7780bdf10b69ba.png

8051ef293a8e5cfe.png

9. ยินดีด้วย

คุณได้เรียนรู้วิธีสร้างโปรเจ็กต์ Maven ด้วย Cloud Dataflow SDK เรียกใช้ไปป์ไลน์ตัวอย่างโดยใช้คอนโซล Google Cloud Platform และลบที่เก็บข้อมูล Cloud Storage ที่เกี่ยวข้องและเนื้อหาในนั้น

ดูข้อมูลเพิ่มเติม

ใบอนุญาต

ผลงานนี้ได้รับอนุญาตภายใต้ใบอนุญาตครีเอทีฟคอมมอนส์แบบระบุแหล่งที่มา 3.0 และใบอนุญาต Apache 2.0