หมูอาปาเช่ - เชลล์ฮึดฮัด
หลังจากเรียกใช้เชลล์ Grunt คุณสามารถรันสคริปต์ Pig ของคุณในเชลล์ได้ นอกจากนั้นยังมีคำสั่งเชลล์และยูทิลิตี้ที่มีประโยชน์บางอย่างที่จัดเตรียมโดย Grunt shell บทนี้อธิบายคำสั่งเชลล์และยูทิลิตี้ที่จัดเตรียมโดย Grunt shell
Note - ในบางส่วนของบทนี้คำสั่งเช่น Load และ Storeใช้ อ้างถึงบทต่างๆเพื่อรับข้อมูลโดยละเอียด
คำสั่งเชลล์
เปลือก Grunt ของ Apache Pig ส่วนใหญ่จะใช้ในการเขียนสคริปต์ Pig Latin ก่อนหน้านั้นเราสามารถเรียกใช้คำสั่งเชลล์โดยใช้sh และ fs.
คำสั่ง sh
การใช้ shคำสั่งเราสามารถเรียกใช้คำสั่งเชลล์ใด ๆ จาก Grunt shell การใช้sh คำสั่งจาก Grunt shell เราไม่สามารถรันคำสั่งที่เป็นส่วนหนึ่งของสภาพแวดล้อมเชลล์ (ex - ซีดี)
Syntax
ให้ด้านล่างเป็นไวยากรณ์ของ sh คำสั่ง
grunt> sh shell command parameters
Example
เราสามารถเรียกใช้ไฟล์ ls คำสั่งของ Linux shell จาก Grunt shell โดยใช้ shตามที่แสดงด้านล่าง ในตัวอย่างนี้จะแสดงรายการไฟล์ในไฟล์/pig/bin/ ไดเรกทอรี
grunt> sh ls
pig
pig_1444799121955.log
pig.cmd
pig.py
คำสั่ง fs
ใช้ fs คำสั่งเราสามารถเรียกใช้คำสั่ง FsShell จาก Grunt shell
Syntax
ให้ด้านล่างเป็นไวยากรณ์ของ fs คำสั่ง
grunt> sh File System command parameters
Example
เราสามารถเรียกใช้คำสั่ง ls ของ HDFS จาก Grunt shell โดยใช้คำสั่ง fs ในตัวอย่างต่อไปนี้จะแสดงรายการไฟล์ในไดเร็กทอรีรากของ HDFS
grunt> fs –ls
Found 3 items
drwxrwxrwx - Hadoop supergroup 0 2015-09-08 14:13 Hbase
drwxr-xr-x - Hadoop supergroup 0 2015-09-09 14:52 seqgen_data
drwxr-xr-x - Hadoop supergroup 0 2015-09-08 11:30 twitter_data
ในทำนองเดียวกันเราสามารถเรียกใช้คำสั่งเชลล์ระบบไฟล์อื่น ๆ ทั้งหมดจาก Grunt shell โดยใช้ fs คำสั่ง
คำสั่งยูทิลิตี้
Grunt shell จัดเตรียมชุดคำสั่งยูทิลิตี้ สิ่งเหล่านี้รวมถึงคำสั่งยูทิลิตี้เช่นclear, help, history, quit, และ set; และคำสั่งต่างๆเช่นexec, kill, และ runเพื่อควบคุม Pig จากกระสุน Grunt ด้านล่างนี้เป็นคำอธิบายของคำสั่งยูทิลิตี้ที่จัดเตรียมโดย Grunt shell
ล้างคำสั่ง
clear คำสั่งใช้เพื่อล้างหน้าจอของ Grunt shell
Syntax
คุณสามารถล้างหน้าจอของเชลล์ฮึดฮัดโดยใช้ไฟล์ clear คำสั่งดังที่แสดงด้านล่าง
grunt> clear
ช่วยคำสั่ง
help คำสั่งให้รายการคำสั่ง Pig หรือคุณสมบัติ Pig
Usage
คุณสามารถรับรายการคำสั่ง Pig โดยใช้ไฟล์ help คำสั่งดังที่แสดงด้านล่าง
grunt> help
Commands: <pig latin statement>; - See the PigLatin manual for details:
http://hadoop.apache.org/pig
File system commands:fs <fs arguments> - Equivalent to Hadoop dfs command:
http://hadoop.apache.org/common/docs/current/hdfs_shell.html
Diagnostic Commands:describe <alias>[::<alias] - Show the schema for the alias.
Inner aliases can be described as A::B.
explain [-script <pigscript>] [-out <path>] [-brief] [-dot|-xml]
[-param <param_name>=<pCram_value>]
[-param_file <file_name>] [<alias>] -
Show the execution plan to compute the alias or for entire script.
-script - Explain the entire script.
-out - Store the output into directory rather than print to stdout.
-brief - Don't expand nested plans (presenting a smaller graph for overview).
-dot - Generate the output in .dot format. Default is text format.
-xml - Generate the output in .xml format. Default is text format.
-param <param_name - See parameter substitution for details.
-param_file <file_name> - See parameter substitution for details.
alias - Alias to explain.
dump <alias> - Compute the alias and writes the results to stdout.
Utility Commands: exec [-param <param_name>=param_value] [-param_file <file_name>] <script> -
Execute the script with access to grunt environment including aliases.
-param <param_name - See parameter substitution for details.
-param_file <file_name> - See parameter substitution for details.
script - Script to be executed.
run [-param <param_name>=param_value] [-param_file <file_name>] <script> -
Execute the script with access to grunt environment.
-param <param_name - See parameter substitution for details.
-param_file <file_name> - See parameter substitution for details.
script - Script to be executed.
sh <shell command> - Invoke a shell command.
kill <job_id> - Kill the hadoop job specified by the hadoop job id.
set <key> <value> - Provide execution parameters to Pig. Keys and values are case sensitive.
The following keys are supported:
default_parallel - Script-level reduce parallelism. Basic input size heuristics used
by default.
debug - Set debug on or off. Default is off.
job.name - Single-quoted name for jobs. Default is PigLatin:<script name>
job.priority - Priority for jobs. Values: very_low, low, normal, high, very_high.
Default is normal stream.skippath - String that contains the path.
This is used by streaming any hadoop property.
help - Display this message.
history [-n] - Display the list statements in cache.
-n Hide line numbers.
quit - Quit the grunt shell.
คำสั่งประวัติศาสตร์
คำสั่งนี้แสดงรายการคำสั่งที่เรียกใช้ / ใช้จนถึงตอนนี้ตั้งแต่เรียก Grunt sell
Usage
สมมติว่าเราได้ดำเนินการสามคำสั่งตั้งแต่เปิด Grunt shell
grunt> customers = LOAD 'hdfs://localhost:9000/pig_data/customers.txt' USING PigStorage(',');
grunt> orders = LOAD 'hdfs://localhost:9000/pig_data/orders.txt' USING PigStorage(',');
grunt> student = LOAD 'hdfs://localhost:9000/pig_data/student.txt' USING PigStorage(',');
จากนั้นใช้ไฟล์ history คำสั่งจะสร้างผลลัพธ์ต่อไปนี้
grunt> history
customers = LOAD 'hdfs://localhost:9000/pig_data/customers.txt' USING PigStorage(',');
orders = LOAD 'hdfs://localhost:9000/pig_data/orders.txt' USING PigStorage(',');
student = LOAD 'hdfs://localhost:9000/pig_data/student.txt' USING PigStorage(',');
ตั้งค่า Command
set คำสั่งใช้เพื่อแสดง / กำหนดค่าให้กับคีย์ที่ใช้ใน Pig
Usage
เมื่อใช้คำสั่งนี้คุณสามารถตั้งค่าให้กับคีย์ต่อไปนี้
สำคัญ | คำอธิบายและค่าต่างๆ |
---|---|
default_parallel | คุณสามารถกำหนดจำนวนตัวลดสำหรับงานแผนที่ได้โดยส่งจำนวนเต็มใด ๆ เป็นค่าไปยังคีย์นี้ |
debug | คุณสามารถปิดหรือเปิดการแก้ไขข้อบกพร่อง freature ใน Pig ได้โดยส่งต่อไปยังคีย์นี้ |
job.name | คุณสามารถตั้งชื่องานเป็นงานที่ต้องการได้โดยส่งค่าสตริงไปยังคีย์นี้ |
job.priority | คุณสามารถกำหนดลำดับความสำคัญของงานให้กับงานได้โดยส่งค่าใดค่าหนึ่งต่อไปนี้ไปยังคีย์นี้ -
|
stream.skippath | สำหรับการสตรีมคุณสามารถกำหนดเส้นทางจากจุดที่จะไม่ถ่ายโอนข้อมูลโดยส่งเส้นทางที่ต้องการในรูปแบบสตริงไปยังคีย์นี้ |
ออกจากคำสั่ง
คุณสามารถออกจากเชลล์ Grunt โดยใช้คำสั่งนี้
Usage
ออกจากเชลล์ Grunt ดังที่แสดงด้านล่าง
grunt> quit
ตอนนี้เรามาดูคำสั่งที่คุณสามารถควบคุม Apache Pig ได้จาก Grunt shell
คำสั่ง exec
ใช้ exec คำสั่งเราสามารถรันสคริปต์ Pig จาก Grunt shell
Syntax
ด้านล่างนี้คือไวยากรณ์ของคำสั่งยูทิลิตี้ exec.
grunt> exec [–param param_name = param_value] [–param_file file_name] [script]
Example
ให้เราถือว่ามีไฟล์ชื่อ student.txt ใน /pig_data/ ไดเรกทอรีของ HDFS ที่มีเนื้อหาต่อไปนี้
Student.txt
001,Rajiv,Hyderabad
002,siddarth,Kolkata
003,Rajesh,Delhi
และสมมติว่าเรามีไฟล์สคริปต์ชื่อ sample_script.pig ใน /pig_data/ ไดเรกทอรีของ HDFS ที่มีเนื้อหาต่อไปนี้
Sample_script.pig
student = LOAD 'hdfs://localhost:9000/pig_data/student.txt' USING PigStorage(',')
as (id:int,name:chararray,city:chararray);
Dump student;
ตอนนี้ให้เรารันสคริปต์ด้านบนจาก Grunt shell โดยใช้ exec คำสั่งดังที่แสดงด้านล่าง
grunt> exec /sample_script.pig
Output
exec คำสั่งเรียกใช้สคริปต์ในไฟล์ sample_script.pig. ตามที่กำหนดไว้ในสคริปต์จะโหลดไฟล์student.txt ไฟล์ลงใน Pig และให้ผลลัพธ์ของตัวดำเนินการถ่ายโอนข้อมูลที่แสดงเนื้อหาต่อไปนี้
(1,Rajiv,Hyderabad)
(2,siddarth,Kolkata)
(3,Rajesh,Delhi)
ฆ่าคำสั่ง
คุณสามารถฆ่างานจากเชลล์ Grunt โดยใช้คำสั่งนี้
Syntax
ด้านล่างนี้เป็นไวยากรณ์ของไฟล์ kill คำสั่ง
grunt> kill JobId
Example
สมมติว่ามีงาน Pig ที่กำลังทำงานอยู่ซึ่งมี id Id_0055คุณสามารถฆ่าได้จากกระสุน Grunt โดยใช้ kill คำสั่งดังที่แสดงด้านล่าง
grunt> kill Id_0055
เรียกใช้คำสั่ง
คุณสามารถเรียกใช้สคริปต์ Pig จากเชลล์ Grunt โดยใช้ไฟล์ run คำสั่ง
Syntax
ด้านล่างนี้เป็นไวยากรณ์ของไฟล์ run คำสั่ง
grunt> run [–param param_name = param_value] [–param_file file_name] script
Example
ให้เราถือว่ามีไฟล์ชื่อ student.txt ใน /pig_data/ ไดเรกทอรีของ HDFS ที่มีเนื้อหาต่อไปนี้
Student.txt
001,Rajiv,Hyderabad
002,siddarth,Kolkata
003,Rajesh,Delhi
และสมมติว่าเรามีไฟล์สคริปต์ชื่อ sample_script.pig ในระบบไฟล์โลคัลที่มีเนื้อหาต่อไปนี้
Sample_script.pig
student = LOAD 'hdfs://localhost:9000/pig_data/student.txt' USING
PigStorage(',') as (id:int,name:chararray,city:chararray);
ตอนนี้ให้เรารันสคริปต์ด้านบนจาก Grunt shell โดยใช้คำสั่ง run ดังที่แสดงด้านล่าง
grunt> run /sample_script.pig
คุณสามารถดูผลลัพธ์ของสคริปต์โดยใช้ไฟล์ Dump operator ดังแสดงด้านล่าง
grunt> Dump;
(1,Rajiv,Hyderabad)
(2,siddarth,Kolkata)
(3,Rajesh,Delhi)
Note - ความแตกต่างระหว่าง exec และ run คำสั่งคือถ้าเราใช้ runคำสั่งจากสคริปต์มีอยู่ในประวัติคำสั่ง