บทช่วยสอนการใช้งาน Apache Sqoop: Archiโครงสร้าง คำสั่ง และตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

Apache Sqoop ย้ายข้อมูลจำนวนมากระหว่างฐานข้อมูลเชิงสัมพันธ์และ HDFS โดยใช้สถาปัตยกรรมตัวเชื่อมต่อ สร้างงาน MapReduce ที่นำเข้าตารางไปยัง Hive หรือ HBase และส่งออกผลลัพธ์ที่ประมวลผลแล้วกลับไปยังระบบต้นทาง

  • 🔘 ความหมาย: Sqoop ถ่ายโอนข้อมูลจำนวนมากระหว่างที่เก็บข้อมูลแบบมีโครงสร้างและ HDFS ผ่านเลเยอร์ตัวเชื่อมต่อแบบปลั๊กอิน
  • ☑️ Archiเทคเจอร์: งานทุกอย่างจะถูกคอมไพล์เป็นโปรแกรม MapReduce ที่ดึงข้อมูลจากตารางแบบขนาน โดยแต่ละงานจะดึงข้อมูลส่วนต่าง ๆ จากตารางแยกกัน
  • ✅ ตัวเชื่อมต่อ: ผู้ขับขี่ที่รวมกลุ่มกันจะครอบคลุม MySQL, PostgreSQL, Oracleรวมถึง SQL Server และ DB2 พร้อมทั้งตัวเลือกสำรอง JDBC ทั่วไป
  • 🧪 คำสั่ง: เครื่องมือการนำเข้าจะดึงตารางเข้าไปใน HDFS, Hive หรือ HBase ในขณะที่เครื่องมือการส่งออกจะส่งไฟล์ที่ประมวลผลแล้วกลับเข้าไปในตาราง
  • 🛠️ โหมดการโหลด: การโหลดแบบเต็มจะคัดลอกตารางทั้งหมด ในขณะที่โหมดการเพิ่มข้อมูลและการโหลดแบบเพิ่มทีละส่วนตามการแก้ไขล่าสุดจะดึงเฉพาะแถวใหม่เท่านั้น
  • ⚠️ สถานะโครงการ: Sqoop เกษียณไปอยู่ที่ห้องใต้หลังคา Apache ในเดือนกรกฎาคม 2021 แล้ว Spark JDBC และ NiFi ตอนนี้รองรับไปป์ไลน์ใหม่แล้ว

บทแนะนำการใช้งาน Apache Sqoop ครอบคลุมถึงสถาปัตยกรรม ตัวเชื่อมต่อ และคำสั่งนำเข้าและส่งออก

SQOOP ใน Hadoop คืออะไร

อาปาเช่ สควอป (SQL-to-Hadoop) เป็นเครื่องมือที่ออกแบบมาเพื่อรองรับการส่งออกและนำเข้าข้อมูลจำนวนมากเข้าสู่ระบบ เอชดีเอฟเอส จากแหล่งเก็บข้อมูลที่มีโครงสร้าง เช่น ฐานข้อมูลเชิงสัมพันธ์ คลังข้อมูลระดับองค์กร และระบบ NoSQL เป็นเครื่องมือการย้ายข้อมูลที่ใช้สถาปัตยกรรมตัวเชื่อมต่อ ซึ่งรองรับปลั๊กอินเพื่อเชื่อมต่อกับระบบภายนอกใหม่ๆ

ตัวอย่างการใช้งานของ Hadoop Sqoop คือองค์กรที่ดำเนินการนำเข้า Sqoop ทุกคืนเพื่อโหลดข้อมูลของวันจาก RDBMS ของธุรกรรมการผลิตลงใน รัง คลังข้อมูลเพื่อการวิเคราะห์ต่อไป

ในบทช่วยสอน Apache Sqoop ต่อไปนี้ เราจะเรียนรู้เกี่ยวกับสถาปัตยกรรม Apache Sqoop

สควอช Archiเทคเจอร์

ที่มีอยู่ทั้งหมด ระบบการจัดการฐานข้อมูล ได้รับการออกแบบด้วย SQL มาตรฐานในใจ อย่างไรก็ตาม แต่ละ DBMS มีความแตกต่างกันในเรื่องของภาษาถิ่นในระดับหนึ่ง ดังนั้นความแตกต่างนี้ทำให้เกิดความท้าทายในการถ่ายโอนข้อมูลข้ามระบบ Sqoop Connectors เป็นส่วนประกอบที่ช่วยเอาชนะความท้าทายเหล่านี้

การถ่ายโอนข้อมูลระหว่าง Sqoop Hadoop และระบบจัดเก็บข้อมูลภายนอกสามารถทำได้ด้วยความช่วยเหลือของตัวเชื่อมต่อของ Sqoop

Sqoop มีตัวเชื่อมต่อสำหรับการทำงานกับฐานข้อมูลเชิงสัมพันธ์ยอดนิยมมากมาย รวมถึง MySQL, PostgreSQL, Oracle, เซิร์ฟเวอร์ SQL และ DB2 ตัวเชื่อมต่อแต่ละตัวเหล่านี้รู้วิธีโต้ตอบกับ DBMS ที่เกี่ยวข้อง นอกจากนี้ยังมีตัวเชื่อมต่อ JDBC ทั่วไปสำหรับการเชื่อมต่อกับฐานข้อมูลใดๆ ที่รองรับ Javaโปรโตคอล JDBC ของ Sqoop นอกจากนี้ Sqoop ยังมีฟังก์ชันการทำงานที่ได้รับการปรับให้เหมาะสมอีกด้วย MySQL และ PostgreSQL ตัวเชื่อมต่อที่ใช้ API เฉพาะฐานข้อมูลเพื่อทำการถ่ายโอนจำนวนมากอย่างมีประสิทธิภาพ

แผนภาพด้านล่างแสดงตำแหน่งของไคลเอ็นต์ Sqoop ที่อยู่ระหว่างแหล่งเก็บข้อมูลภายนอกและคลัสเตอร์ Hadoop โดยมีเลเยอร์ตัวเชื่อมต่ออยู่ด้านหนึ่ง และ HDFS, Hive และ HBase อยู่ด้านตรงข้าม

แผนภาพสถาปัตยกรรมของ Sqoop แสดงเลเยอร์ตัวเชื่อมต่อที่เชื่อมโยง RDBMS กับคลัสเตอร์ Hadoop

ภายใต้เลเยอร์ตัวเชื่อมต่อ Sqoop จะสร้าง Java คลาสที่จำลองแถวหนึ่งของตารางแล้วส่งเฉพาะแผนที่ แผนที่ลด งานแต่ละงานในการแมปจะอ่านส่วนหนึ่งของช่วงคอลัมน์ที่แยกออก ดังนั้นปริมาณงานจึงเพิ่มขึ้นตามจำนวนตัวแมป ไม่ใช่ตามเคอร์เซอร์ JDBC ตัวเดียว

นอกจากนี้ Sqoop ยังมีตัวเชื่อมต่อจากผู้ให้บริการภายนอกหลากหลายรายสำหรับแหล่งจัดเก็บข้อมูล ตั้งแต่ระดับองค์กรไปจนถึงระดับองค์กรขนาดใหญ่ คลังข้อมูล (รวมถึง Netezza, Teradata และ Oracle) ไปยังร้านค้า NoSQL (เช่น Couchbase) อย่างไรก็ตาม ตัวเชื่อมต่อเหล่านี้ไม่ได้มาพร้อมกับชุด Sqoop จำเป็นต้องดาวน์โหลดแยกต่างหากและสามารถเพิ่มลงในการติดตั้ง Sqoop ที่มีอยู่ได้อย่างง่ายดาย

ทำไมเราถึงต้องการ Sqoop?

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

ประเด็นสำคัญ:

  1. การโหลดข้อมูลโดยใช้สคริปต์ — วิธีการแบบดั้งเดิมที่ใช้สคริปต์ในการโหลดข้อมูลนั้นไม่เหมาะสมสำหรับการโหลดข้อมูลจำนวนมากเข้าสู่ Hadoop เนื่องจากวิธีการนี้ไม่มีประสิทธิภาพและใช้เวลานานมาก
  2. การเข้าถึงข้อมูลภายนอกโดยตรงผ่านแอปพลิเคชัน Map-Reduce — การให้สิทธิ์การเข้าถึงข้อมูลที่อยู่ในระบบภายนอกโดยตรง (โดยไม่ต้องโหลดลงใน Hadoop) สำหรับแอปพลิเคชัน map-reduce ทำให้แอปพลิเคชันเหล่านี้ซับซ้อนขึ้น ดังนั้นวิธีการนี้จึงไม่เหมาะสม

นอกจากความสามารถในการจัดการกับข้อมูลจำนวนมหาศาลแล้ว Hadoop ยังสามารถทำงานกับข้อมูลในหลายรูปแบบได้อีกด้วย ดังนั้น เพื่อโหลดข้อมูลที่หลากหลายเหล่านี้เข้าสู่ Hadoop จึงได้มีการพัฒนาเครื่องมือต่างๆ ขึ้นมา สควอช และ ไลเดอร์ เป็นเครื่องมือในการโหลดข้อมูลสองรายการดังกล่าว

ต่อไปในบทช่วยสอน Sqoop พร้อมตัวอย่างนี้ เราจะเรียนรู้เกี่ยวกับความแตกต่างระหว่าง Sqoop, Flume และ HDFS

Sqoop กับ Flume กับ HDFS ใน Hadoop

สควอช ไลเดอร์ เอชดีเอฟเอส
Sqoop ใช้สำหรับการนำเข้าข้อมูลจากแหล่งข้อมูลที่มีโครงสร้าง เช่น RDBMS Flume ใช้สำหรับย้ายข้อมูลการสตรีมจำนวนมากไปยัง HDFS HDFS เป็นระบบไฟล์แบบกระจายที่ใช้โดยระบบนิเวศ Hadoop เพื่อจัดเก็บข้อมูล
Sqoop มีสถาปัตยกรรมแบบตัวเชื่อมต่อ ตัวเชื่อมต่อจะรู้วิธีเชื่อมต่อกับแหล่งข้อมูลที่เกี่ยวข้องและดึงข้อมูล Flume มีสถาปัตยกรรมแบบใช้ตัวแทน โดยที่นี่จะมีการเขียนโค้ด (เรียกว่า 'ตัวแทน') ซึ่งทำหน้าที่ดึงข้อมูล HDFS มีสถาปัตยกรรมแบบกระจาย โดยที่ข้อมูลจะกระจายไปทั่วโหนดข้อมูลหลายโหนด
HDFS เป็นปลายทางสำหรับการนำเข้าข้อมูลโดยใช้ Sqoop ข้อมูลจะไหลไปยัง HDFS ผ่านช่องสัญญาณตั้งแต่ศูนย์ขึ้นไป HDFS เป็นปลายทางขั้นสูงสุดสำหรับการจัดเก็บข้อมูล
โหลดข้อมูล Sqoop ไม่ได้ขับเคลื่อนด้วยเหตุการณ์ โหลดข้อมูล Flume สามารถขับเคลื่อนโดยเหตุการณ์ได้ HDFS เก็บข้อมูลที่ได้รับมาไม่ว่าจะด้วยวิธีใดก็ตาม
ในการนำเข้าข้อมูลจากแหล่งข้อมูลที่มีโครงสร้าง เราต้องใช้คำสั่ง Sqoop เท่านั้น เนื่องจากตัวเชื่อมต่อรู้วิธีโต้ตอบกับแหล่งข้อมูลที่มีโครงสร้างและดึงข้อมูลจากแหล่งข้อมูลเหล่านั้น เพื่อโหลดข้อมูลสตรีมมิ่ง เช่น ทวีตที่สร้างบน Twitter หรือไฟล์บันทึกของเว็บเซิร์ฟเวอร์ ควรใช้ Flume เอเจนต์ Flume สร้างขึ้นเพื่อดึงข้อมูลการสตรีม HDFS มีคำสั่งเชลล์ในตัวสำหรับจัดเก็บข้อมูล แต่ไม่สามารถนำเข้าข้อมูลแบบสตรีมมิ่งได้

คุณสมบัติหลักของ Sqoop

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

  • โหลดเต็ม: คำสั่งเดียวสามารถคัดลอกตารางทั้งหมดได้ และ import-all-tables คัดลอกทุกตารางในสคีมาในครั้งเดียว
  • การโหลดแบบเพิ่มทีละน้อย: append โหมด tracks คือคอลัมน์ที่เพิ่มขึ้นอย่างต่อเนื่อง เช่น คีย์ทดแทน ในขณะที่ lastmodified โหมด tracks มีคอลัมน์ประทับเวลา ดังนั้นเฉพาะแถวใหม่หรือแถวที่มีการเปลี่ยนแปลงเท่านั้นที่จะถูกส่งต่อ
  • การถ่ายโอนแบบขนาน: คอลัมน์ที่แยกออกจะแบ่งช่วงคีย์ออกเป็นส่วนๆ สำหรับงานแมป และจำนวนตัวแมปเปอร์จะกำหนดว่าจะเรียกใช้งานพร้อมกันกี่งาน
  • นำเข้าแบบสอบถามรูปแบบอิสระ: สามารถนำเข้าผลลัพธ์ของคำสั่ง SQL ใดๆ ก็ได้ แทนที่จะนำเข้าทั้งตาราง ซึ่งจะช่วยรักษาการเชื่อมต่อและการกรองข้อมูลไว้ในฝั่งฐานข้อมูล
  • ขนส่งสินค้าเข้าคลังสินค้าโดยตรง: การนำเข้าสามารถสร้างและเติมข้อมูลได้ รัง หรือเขียนข้อมูลลงในตาราง HBase โดยตรงแทนที่จะหยุดการทำงานping ในไฟล์ HDFS ดิบ
  • การบีบอัดและรูปแบบไฟล์: ผลลัพธ์สามารถบันทึกเป็นข้อความคั่นด้วยตัวคั่น (delimited text), ไฟล์ลำดับ (SequenceFile), Avro หรือ Parquet โดยมีตัวเลือกการบีบอัดระดับโคเดก (codec-level compression)
  • การรักษาความปลอดภัย: Sqoop สามารถทำงานร่วมกับ Kerberos ได้ และสามารถอ่านข้อมูลรับรองจากไฟล์รหัสผ่าน หรือขอให้ป้อนข้อมูลรับรองแทนการพิมพ์ลงในบรรทัดคำสั่งได้

คำสั่งนำเข้าและส่งออกของ Sqoop

การถ่ายโอนข้อมูลทั้งสองทิศทางดำเนินการผ่านยูทิลิตี้บรรทัดคำสั่งเดียว เครื่องมือการนำเข้าจะย้ายแถวจากฐานข้อมูลไปยัง Hadoop และเครื่องมือการส่งออกจะย้ายไฟล์จาก Hadoop กลับไปยังตารางฐานข้อมูล

โดยทั่วไป การนำเข้าข้อมูลจะระบุการเชื่อมต่อ JDBC, ตารางต้นทาง, ไดเร็กทอรีปลายทาง, คอลัมน์ที่แยก และจำนวนตัวแมปเปอร์:

sqoop import \
  --connect jdbc:mysql://localhost:3306/employees \
  --username hadoop \
  --password-file /user/hadoop/.mysql.password \
  --table employees \
  --target-dir /user/hadoop/warehouse/employees \
  --split-by emp_no \
  --num-mappers 4

การส่งออก (Export) จะกลับกระบวนการทำงาน โดยจะอ่านไฟล์ที่คั่นด้วยตัวคั่นซึ่งอยู่ในไดเร็กทอรี HDFS อยู่แล้ว และแทรกไฟล์เหล่านั้นลงในตารางที่มีอยู่ ดังนั้นจึงต้องสร้างตารางเป้าหมายก่อน:

sqoop export \
  --connect jdbc:mysql://localhost:3306/employees \
  --username hadoop \
  --password-file /user/hadoop/.mysql.password \
  --table employee_summary \
  --export-dir /user/hadoop/warehouse/employee_summary \
  --input-fields-terminated-by ','

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

sqoop import \
  --connect jdbc:mysql://localhost:3306/sales \
  --table orders \
  --incremental append \
  --check-column order_id \
  --last-value 15000 \
  --target-dir /user/hadoop/warehouse/orders

นี่คือข้อโต้แย้งที่พบได้ในแทบทุกงาน:

ข้อโต้แย้ง สิ่งที่มันควบคุม
--connect เจดีบีซี URL ของฐานข้อมูลต้นทางหรือฐานข้อมูลปลายทาง
--table ตารางที่ใช้อ่านข้อมูลเมื่อนำเข้า หรือเขียนข้อมูลลงไปเมื่อส่งออก
--target-dir ไดเร็กทอรี HDFS ที่จะรับการนำเข้า ต้องไม่มีอยู่แล้ว
--export-dir ไดเร็กทอรี HDFS ที่ไฟล์ต่างๆ ถูกอ่านโดยการส่งออก
--split-by คอลัมน์ที่มีช่วงข้อมูลแบ่งตามงานแผนที่
--num-mappers (-m) จำนวนงานแมปแบบขนาน ค่าเริ่มต้นคือสี่
--incremental เลือก append or lastmodified เปลี่ยนแปลง tracกษัตริย์.
--hive-import สร้างตาราง Hive ที่ตรงกันและโหลดข้อมูลที่นำเข้าลงในตารางนั้น

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

สถานะโครงการ Sqoop และทางเลือกที่ทันสมัยอื่นๆ

มีรายละเอียดเกี่ยวกับเวอร์ชันหนึ่งที่สำคัญก่อนที่จะนำคำสั่งข้างต้นไปใช้ในตัวกำหนดเวลา

นักพัฒนา Sqoop ลงมติยุติโครงการในเดือนมิถุนายน 2021 และการย้ายไปยังที่อื่นก็เริ่มต้นขึ้น อะปาเช่ แอทติก เสร็จสมบูรณ์ในเดือนกรกฎาคม 2021 เว็บไซต์ รายชื่อผู้รับจดหมาย ที่เก็บข้อมูล Git และปัญหาต่างๆ tracไฟล์ ker และไฟล์ดาวน์โหลดทั้งหมดยังคงใช้งานได้ แต่เป็นแบบอ่านอย่างเดียว และไม่มีแผนที่จะออกเวอร์ชันใหม่เพิ่มเติมอีกแล้ว เวอร์ชันที่ใช้งานจริงล่าสุดคือ Sqoop 1.4.7 จากปี 2017 ส่วน Sqoop 2 เวอร์ชันแยกต่างหาก (1.99.x) นั้นไม่เคยมีฟีเจอร์ครบครันและไม่เคยถูกประกาศว่าพร้อมใช้งานจริง

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

ทางเลือก เหมาะสมที่สุด
Spark โดยใช้แหล่งข้อมูล JDBC ตารางชุดตัวอย่างtracts ที่นั่งอยู่ภายในอยู่แล้ว Spark ไปป์ไลน์ โดยใช้การอ่านแบบแบ่งส่วนแทนที่จะใช้ตัวแมปเปอร์
อาปาเช่ นิไฟ การกำหนดเส้นทางแบบเห็นภาพและอิงตามการไหลของข้อมูล ระหว่างระบบที่หลากหลายและแตกต่างกัน
Kafka Connect พร้อมตัวเชื่อมต่อ CDC การบันทึกการเปลี่ยนแปลงข้อมูลอย่างต่อเนื่อง แทนการบันทึกข้อมูลเป็นชุดในตอนกลางคืน
แพลตฟอร์ม ETL ที่ได้รับการจัดการ เช่น Talend ตัวเชื่อมต่อสำเร็จรูป การจัดตารางเวลา และการติดตามลำดับการทำงาน โดยไม่ต้องเขียนงานด้วยตนเอง

คำถามที่พบบ่อย

Sqoop 1 เป็นไคลเอ็นต์แบบบรรทัดคำสั่งตัวเดียวที่ใช้ในทุกบทเรียน Sqoop 2 เพิ่มเซิร์ฟเวอร์, REST API และเว็บ UI แต่ก็ไม่เคยมีฟีเจอร์ครบครันและไม่เคยถูกระบุว่าพร้อมใช้งานในระดับการผลิต ดังนั้นเวอร์ชัน 1.4.x จึงยังคงเป็นมาตรฐานต่อไป

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

Copilot สร้างโครงร่างอาร์กิวเมนต์ได้อย่างรวดเร็ว แต่ผสมผสานไวยากรณ์ของ Sqoop 1 และ Sqoop 2 และสร้างแฟล็กที่ไม่มีเวอร์ชันใดรองรับ ตรวจสอบอาร์กิวเมนต์ทุกตัวกับคู่มือผู้ใช้ Sqoop สำหรับเวอร์ชันที่ติดตั้งก่อนกำหนดเวลาการทำงาน

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

รหัสผ่านที่พิมพ์ในบรรทัดคำสั่งจะปรากฏให้ทุกคนที่แสดงรายการกระบวนการเห็น ดังนั้นควรเก็บรหัสผ่านไว้ในไฟล์ HDFS ที่อ่านได้เฉพาะเจ้าของงานเท่านั้น แล้วใช้พารามิเตอร์ password-file ชี้ไปยังไฟล์นั้น หรือใช้พรอมต์แบบโต้ตอบแทน

รูปแบบไฟล์ข้อความคั่นด้วยตัวคั่นเป็นค่าเริ่มต้น นอกจากนี้ยังรองรับ SequenceFile, Avro และ Parquet โดยแต่ละรูปแบบจะถูกเลือกด้วยอาร์กิวเมนต์ของตนเอง ไฟล์ Parquet แบบคอลัมน์เหมาะสำหรับคำสั่งค้นหาเชิงวิเคราะห์ในภายหลัง ในขณะที่ข้อความคั่นด้วยตัวคั่นยังคงเป็นรูปแบบที่ง่ายที่สุดในการตรวจสอบและป้อนข้อมูลลงในไฟล์ส่งออก

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

A Java รันไทม์ที่กำหนดค่าไว้ Hadoop ต้องมีไคลเอ็นต์ที่สามารถเชื่อมต่อกับคลัสเตอร์ได้ และไฟล์ JAR ของไดรเวอร์ JDBC สำหรับฐานข้อมูลเป้าหมายที่อยู่ในไดเร็กทอรีไลบรารีของ Sqoop การขาดไฟล์ JAR ของไดรเวอร์เป็นสาเหตุที่พบบ่อยที่สุดที่ทำให้เกิดความล้มเหลวในการใช้งานครั้งแรก

สรุปโพสต์นี้ด้วย: