หมูอาปาเช่ - เชลล์ฮึดฮัด

หลังจากเรียกใช้เชลล์ 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

คุณสามารถกำหนดลำดับความสำคัญของงานให้กับงานได้โดยส่งค่าใดค่าหนึ่งต่อไปนี้ไปยังคีย์นี้ -

  • very_low
  • low
  • normal
  • high
  • very_high
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คำสั่งจากสคริปต์มีอยู่ในประวัติคำสั่ง