Apache Pig - Lưu trữ dữ liệu

Trong chương trước, chúng ta đã học cách tải dữ liệu vào Apache Pig. Bạn có thể lưu trữ dữ liệu đã tải trong hệ thống tệp bằng cách sử dụngstorenhà điều hành. Chương này giải thích cách lưu trữ dữ liệu trong Apache Pig bằng cách sử dụngStore nhà điều hành.

Cú pháp

Dưới đây là cú pháp của câu lệnh Store.

STORE Relation_name INTO ' required_directory_path ' [USING function];

Thí dụ

Giả sử chúng ta có một tệp student_data.txt trong HDFS với nội dung sau.

001,Rajiv,Reddy,9848022337,Hyderabad
002,siddarth,Battacharya,9848022338,Kolkata
003,Rajesh,Khanna,9848022339,Delhi
004,Preethi,Agarwal,9848022330,Pune
005,Trupthi,Mohanthy,9848022336,Bhuwaneshwar
006,Archana,Mishra,9848022335,Chennai.

Và chúng tôi đã đọc nó thành một mối quan hệ student sử dụng toán tử LOAD như hình dưới đây.

grunt> student = LOAD 'hdfs://localhost:9000/pig_data/student_data.txt' 
   USING PigStorage(',')
   as ( id:int, firstname:chararray, lastname:chararray, phone:chararray, 
   city:chararray );

Bây giờ, chúng ta hãy lưu trữ mối quan hệ trong thư mục HDFS “/pig_Output/” như hình bên dưới.

grunt> STORE student INTO ' hdfs://localhost:9000/pig_Output/ ' USING PigStorage (',');

Đầu ra

Sau khi thực hiện store, bạn sẽ nhận được kết quả sau. Một thư mục được tạo với tên được chỉ định và dữ liệu sẽ được lưu trữ trong đó.

2015-10-05 13:05:05,429 [main] INFO  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.
MapReduceLau ncher - 100% complete
2015-10-05 13:05:05,429 [main] INFO  org.apache.pig.tools.pigstats.mapreduce.SimplePigStats - 
Script Statistics:
   
HadoopVersion    PigVersion    UserId    StartedAt             FinishedAt             Features 
2.6.0            0.15.0        Hadoop    2015-10-0 13:03:03    2015-10-05 13:05:05    UNKNOWN  
Success!  
Job Stats (time in seconds): 
JobId          Maps    Reduces    MaxMapTime    MinMapTime    AvgMapTime    MedianMapTime    
job_14459_06    1        0           n/a           n/a           n/a           n/a
MaxReduceTime    MinReduceTime    AvgReduceTime    MedianReducetime    Alias    Feature   
     0                 0                0                0             student  MAP_ONLY 
OutPut folder
hdfs://localhost:9000/pig_Output/ 
 
Input(s): Successfully read 0 records from: "hdfs://localhost:9000/pig_data/student_data.txt"  
Output(s): Successfully stored 0 records in: "hdfs://localhost:9000/pig_Output"  
Counters:
Total records written : 0
Total bytes written : 0
Spillable Memory Manager spill count : 0 
Total bags proactively spilled: 0
Total records proactively spilled: 0
  
Job DAG: job_1443519499159_0006
  
2015-10-05 13:06:06,192 [main] INFO  org.apache.pig.backend.hadoop.executionengine
.mapReduceLayer.MapReduceLau ncher - Success!

xác minh

Bạn có thể xác minh dữ liệu được lưu trữ như hình dưới đây.

Bước 1

Trước hết, liệt kê các tệp trong thư mục có tên pig_output sử dụng ls lệnh như hình dưới đây.

hdfs dfs -ls 'hdfs://localhost:9000/pig_Output/'
Found 2 items
rw-r--r-   1 Hadoop supergroup          0 2015-10-05 13:03 hdfs://localhost:9000/pig_Output/_SUCCESS
rw-r--r-   1 Hadoop supergroup        224 2015-10-05 13:03 hdfs://localhost:9000/pig_Output/part-m-00000

Bạn có thể thấy rằng hai tệp được tạo sau khi thực hiện store tuyên bố.

Bước 2

Sử dụng cat lệnh, liệt kê nội dung của tệp có tên part-m-00000 như hình bên dưới.

$ hdfs dfs -cat 'hdfs://localhost:9000/pig_Output/part-m-00000' 
1,Rajiv,Reddy,9848022337,Hyderabad
2,siddarth,Battacharya,9848022338,Kolkata
3,Rajesh,Khanna,9848022339,Delhi
4,Preethi,Agarwal,9848022330,Pune
5,Trupthi,Mohanthy,9848022336,Bhuwaneshwar
6,Archana,Mishra,9848022335,Chennai