Hive ETL: กำลังโหลด JSON, XML, ตัวอย่างข้อมูลข้อความ
Hive เป็นเครื่องมือ ETL และคลังข้อมูล Hadoop ระบบนิเวศน์มีฟังก์ชันต่างๆ เช่น การสร้างแบบจำลองข้อมูล การจัดการข้อมูล การประมวลผลข้อมูล และการสอบถามข้อมูล การดึงข้อมูลใน Hive หมายถึงการสร้างตารางใน Hive และการโหลดข้อมูลที่มีโครงสร้างและกึ่งมีโครงสร้าง รวมถึงการสอบถามข้อมูลตามข้อกำหนด
สำหรับการประมวลผลเป็นชุด เราจะเขียนสคริปต์ที่กำหนดแบบกำหนดเองโดยใช้แผนที่แบบกำหนดเอง และลดสคริปต์โดยใช้ภาษาสคริปต์ มันให้ SQL เช่นสภาพแวดล้อมและการสนับสนุนเพื่อการสืบค้นที่ง่ายดาย
การทำงานกับข้อมูลที่มีโครงสร้างโดยใช้ Hive
ข้อมูลที่มีโครงสร้างหมายความว่าข้อมูลอยู่ในรูปแบบที่เหมาะสมของแถวและคอลัมน์ นี่มันเหมือนมากกว่านะ อาร์ดีบีเอ็มเอส ข้อมูลที่มีแถวและคอลัมน์ที่เหมาะสม
ที่นี่เราจะโหลดข้อมูลที่มีโครงสร้างในไฟล์ข้อความใน Hive
ขั้นตอน 1) ในขั้นตอนนี้ เรากำลังสร้างตาราง “employees_guru” พร้อมชื่อคอลัมน์ เช่น Id, Name, Age, Address, Salary และ Department ของพนักงานพร้อมประเภทข้อมูล
จากภาพหน้าจอด้านบน เราสามารถสังเกตได้ดังต่อไปนี้
- การสร้างตาราง “employees_guru”
- กำลังโหลดข้อมูลจาก Employees.txt ลงในตาราง”employees_guru”
ขั้นตอน 2) ในขั้นตอนนี้ เราจะแสดงเนื้อหาที่เก็บไว้ในตารางโดยใช้คำสั่ง "เลือก" เราสามารถดูเนื้อหาในตารางได้จากภาพหน้าจอต่อไปนี้
– ตัวอย่างโค้ดตัวอย่าง
แบบสอบถามที่จะดำเนินการ
1) Create table employees_guru(Id INT, Name STRING, Age INT, Address STRING, Salary FLOAT, Department STRING) > Row format delimited > Fields terminated by ','; 2) load data local inpath '/home/hduser/Employees.txt' into TABLE employees_guru; 3) select * from employees_guru;
การทำงานกับข้อมูลที่มีโครงสร้างกึ่งโดยใช้ Hive (XML, JSON)
Hive ทำหน้าที่ ETL ในระบบนิเวศ Hadoop โดยทำหน้าที่เป็น เครื่องมือ ETLการลดแผนที่อาจเป็นเรื่องยากในแอปพลิเคชันบางประเภท แต่ Hive สามารถลดความซับซ้อนได้ และมอบโซลูชันที่ดีที่สุดสำหรับแอปพลิเคชันไอทีในแง่ของภาคการจัดเก็บข้อมูล
ข้อมูลกึ่งโครงสร้าง เช่น XML และ JSON สามารถประมวลผลได้โดยมีความซับซ้อนน้อยลงโดยใช้ Hive ก่อนอื่นเราจะดูว่าเราจะใช้ Hive ได้อย่างไร XML.
XML ไปยังตารางไฮฟ์
ในที่นี้ เราจะโหลดข้อมูล XML ลงในตาราง Hive และเราจะดึงค่าที่เก็บไว้ในแท็ก XML
ขั้นตอน 1) การสร้างตาราง “xmlsample_guru” ด้วยคอลัมน์ str พร้อมชนิดข้อมูลสตริง
จากภาพหน้าจอด้านบนเราสามารถสังเกตได้ดังต่อไปนี้
- การสร้างตาราง “xmlsample_guru”
- กำลังโหลดข้อมูลจาก test.xml ลงในตาราง “xmlsample_guru”
ขั้นตอน 2) การใช้ XPath () วิธีการที่เราจะสามารถดึงข้อมูลที่เก็บไว้ในแท็ก XML
จากภาพหน้าจอด้านบนเราสามารถสังเกตได้ดังต่อไปนี้
- การใช้วิธี XPATH( ) เรากำลังดึงค่าที่เก็บไว้ภายใต้ /emp/esal/ และ /emp/ename/
- ค่าปัจจุบันแท็ก XML ภายใน ในขั้นตอนนี้ เรากำลังแสดงค่าจริงที่เก็บไว้ภายใต้แท็ก XML ในตาราง “xmlsample_guru”
ขั้นตอน 3) ในขั้นตอนนี้ เราจะดึงข้อมูลและแสดง Raw XML ของตาราง “xmlsample_guru”
จากภาพหน้าจอด้านบนเราสามารถสังเกตได้ดังต่อไปนี้
- ข้อมูล XML จริงที่แสดงพร้อมกับแท็ก
- หากเราสังเกตแท็กเดี่ยว จะมีคำว่า "emp" เป็นแท็กพาเรนต์ โดยมี "ename" และ "esal" เป็นแท็กย่อย
ข้อมูลโค้ด:
แบบสอบถามที่จะดำเนินการ
1) create table xmlsample_guru(str string); 2) load data local inpath '/home/hduser/test.xml' overwrite into table xmlsample_guru; 3) select xpath(str,'emp/ename/text()'), xpath(str,'emp/esal/text()') from xmlsample_guru;
เจสัน (Javaสัญกรณ์วัตถุสคริปต์)
ข้อมูล Twitter และเว็บไซต์ถูกจัดเก็บในรูปแบบ JSON เมื่อใดก็ตามที่เราพยายามดึงข้อมูลจากเซิร์ฟเวอร์ออนไลน์ มันจะส่งคืนไฟล์ JSON การใช้ Hive เป็นที่เก็บข้อมูลทำให้เราสามารถโหลดข้อมูล JSON ลงในตาราง Hive ได้โดยการสร้างสคีมา
JSON สู่ตารางไฮฟ์
ในที่นี้ เราจะโหลดข้อมูล JSON ลงในตาราง Hive และเราจะดึงค่าที่จัดเก็บไว้ในสคีมา JSON
ขั้นตอน 1) ในขั้นตอนนี้ เราจะสร้างชื่อตาราง JSON “json_guru” เมื่อสร้างการโหลดและแสดงเนื้อหาของสคีมาจริงแล้ว
จากภาพหน้าจอด้านบนเราสามารถสังเกตได้ดังต่อไปนี้
- การสร้างตาราง “json_guru”
- กำลังโหลดข้อมูลจาก test.json ลงในตาราง “json_guru”
- การแสดงสคีมาที่แท้จริงของไฟล์ JSON ที่จัดเก็บไว้ในตาราง json_guru
ขั้นตอน 2) การใช้เมธอด get_json_object() ทำให้เราสามารถดึงค่าข้อมูลที่จัดเก็บไว้ในลำดับชั้น JSON ได้
จากภาพหน้าจอข้างต้นเราสามารถสังเกตได้ดังต่อไปนี้
- การใช้ get_json_object (str,'$.ecode) จะสามารถดึงค่า ecode จากตาราง json_guru ในทำนองเดียวกันการใช้ get_json_object (str,'$.ename) ,get_json_object (str,'$.Sali) มันจะดึงค่า ename sal จากตาราง json_guru
- ค่าที่เก็บไว้ภายในลำดับชั้น JSON ใน json_guru
ข้อมูลโค้ด
แบบสอบถามที่จะดำเนินการ
1) create table json_guru(str string); 2) load data inpath 'home/hduser/test.json' into table json_guru; 3) select * from json1; 4) select get_json_object(str,'$.ecode') as ecode, get_json_object(str,'$.ename') as ename ,get_json_object(str,'$.sal') as salary from json_guru;
ตาราง JSON ที่ซับซ้อนถึง HIVE
ในการดำเนินการนี้ เราจะโหลดข้อมูล JSON ที่ซับซ้อนลงในตาราง Hive และดึงค่าที่จัดเก็บในโครงร่าง JSON
ขั้นตอน 1) การสร้าง complexjson_guru ด้วยฟิลด์คอลัมน์เดียว
จากภาพหน้าจอด้านบนเราสามารถสังเกตได้ดังต่อไปนี้
- การสร้างตาราง complexjson_guru โดยมีฟิลด์คอลัมน์เดียวเป็นชนิดข้อมูลสตริง
- กำลังโหลดข้อมูลลงใน complexjson_guru จากไฟล์ JSON ที่ซับซ้อน emp.json
ขั้นตอน 2) ด้วยการใช้ get_json_object เราสามารถดึงเนื้อหาจริงที่เก็บไว้ภายในลำดับชั้นของไฟล์ JSON
จากภาพหน้าจอต่อไปนี้ เราจะเห็นผลลัพธ์ของข้อมูลที่เก็บไว้ใน complexjson_guru ได้
ขั้นตอน 3) ในขั้นตอนนี้ การใช้คำสั่ง “Select” ทำให้เราสามารถดูข้อมูล JSON ที่ซับซ้อนที่จัดเก็บอยู่ภายในตาราง “complexjson_guru” ได้
-ตัวอย่างข้อมูลโค้ด
แบบสอบถามที่จะดำเนินการ
1) create table complexjson_guru(json string); 2) load data inpath 'home/hduser/emp.json' into table complexjson_guru; 3) select get_json_object(json,'$.ecode') as ecode ,get_json_object(json,'$.b') as code, get_json_object(json,'$.c') from complexjson_guru; 4) select * from complexjson_guru;
Hive ในโครงการเรียลไทม์ – ควรใช้เมื่อใดและที่ไหน
เมื่อใดและที่ไหนจึงจะใช้ Hive บนระบบนิเวศ Hadoop:
เมื่อ
- เมื่อทำงานกับฟังก์ชันสถิติที่แข็งแกร่งและทรงพลังบนระบบนิเวศ Hadoop
- เมื่อทำงานกับการประมวลผลข้อมูลที่มีโครงสร้างและกึ่งมีโครงสร้าง
- เป็นเครื่องมือคลังข้อมูลที่มี Hadoop
- การนำเข้าข้อมูลแบบเรียลไทม์ด้วย HBASE, Hive สามารถใช้ได้
ที่ไหน
- เพื่อความสะดวกในการใช้งาน ETL และเครื่องมือคลังข้อมูล
- เพื่อจัดเตรียมสภาพแวดล้อมประเภท SQL และเพื่อสืบค้นเช่น SQL โดยใช้ HIVEQL
- เพื่อใช้และปรับใช้แผนที่และสคริปต์ตัวลดที่ระบุแบบกำหนดเองสำหรับข้อกำหนดเฉพาะของลูกค้า