Sqoop - Codegen

บทนี้อธิบายถึงความสำคัญของเครื่องมือ 'codegen' จากมุมมองของแอ็พพลิเคชันเชิงวัตถุทุกตารางฐานข้อมูลจะมีคลาส DAO หนึ่งคลาสที่มีเมธอด 'getter' และ 'setter' เพื่อเริ่มต้นอ็อบเจ็กต์ เครื่องมือนี้ (-codegen) สร้างคลาส DAO โดยอัตโนมัติ

สร้างคลาส DAO ใน Java ขึ้นอยู่กับโครงสร้างตาราง Schema นิยาม Java ถูกสร้างอินสแตนซ์เป็นส่วนหนึ่งของกระบวนการอิมพอร์ต การใช้งานหลักของเครื่องมือนี้คือการตรวจสอบว่า Java สูญเสียรหัส Java หรือไม่ ในกรณีนี้ระบบจะสร้าง Java เวอร์ชันใหม่โดยมีตัวคั่นเริ่มต้นระหว่างฟิลด์

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์สำหรับคำสั่ง Sqoop codegen

$ sqoop codegen (generic-args) (codegen-args) 
$ sqoop-codegen (generic-args) (codegen-args)

ตัวอย่าง

ให้เรายกตัวอย่างที่สร้างโค้ด Java สำหรับไฟล์ emp ตารางใน userdb ฐานข้อมูล.

คำสั่งต่อไปนี้ใช้เพื่อดำเนินการตามตัวอย่างที่กำหนด

$ sqoop codegen \
--connect jdbc:mysql://localhost/userdb \
--username root \ 
--table emp

หากคำสั่งดำเนินการสำเร็จคำสั่งจะสร้างผลลัพธ์ต่อไปนี้บนเทอร์มินัล

14/12/23 02:34:40 INFO sqoop.Sqoop: Running Sqoop version: 1.4.5
14/12/23 02:34:41 INFO tool.CodeGenTool: Beginning code generation
……………….
14/12/23 02:34:42 INFO orm.CompilationManager: HADOOP_MAPRED_HOME is /usr/local/hadoop
Note: /tmp/sqoop-hadoop/compile/9a300a1f94899df4a9b10f9935ed9f91/emp.java uses or 
   overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

14/12/23 02:34:47 INFO orm.CompilationManager: Writing jar file: 
   /tmp/sqoop-hadoop/compile/9a300a1f94899df4a9b10f9935ed9f91/emp.jar

การยืนยัน

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

$ cd /tmp/sqoop-hadoop/compile/9a300a1f94899df4a9b10f9935ed9f91/
$ ls
emp.class
emp.jar
emp.java

หากคุณต้องการตรวจสอบเชิงลึกให้เปรียบเทียบไฟล์ emp ตารางใน userdb ฐานข้อมูลและ emp.java ในไดเร็กทอรีต่อไปนี้

/ tmp / sqoop-hadoop / คอมไพล์ / 9a300a1f94899df4a9b10f9935ed9f91 /.