Apache Pig - Đọc dữ liệu

Nói chung, Apache Pig hoạt động trên Hadoop. Nó là một công cụ phân tích phân tích các tập dữ liệu lớn tồn tại trongHbám vào File System. Để phân tích dữ liệu bằng Apache Pig, ban đầu chúng ta phải tải dữ liệu vào Apache Pig. Chương này giải thích cách tải dữ liệu vào Apache Pig từ HDFS.

Chuẩn bị HDFS

Trong chế độ MapReduce, Pig đọc (tải) dữ liệu từ HDFS và lưu trữ kết quả trở lại HDFS. Do đó, chúng ta hãy bắt đầu HDFS và tạo dữ liệu mẫu sau trong HDFS.

thẻ học sinh Tên đầu tiên Họ Điện thoại Tp.
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

Tập dữ liệu trên chứa các chi tiết cá nhân như id, họ, tên, số điện thoại và thành phố của sáu sinh viên.

Bước 1: Xác minh Hadoop

Trước hết, xác minh cài đặt bằng lệnh phiên bản Hadoop, như hình dưới đây.

$ hadoop version

Nếu hệ thống của bạn chứa Hadoop và nếu bạn đã đặt biến PATH, thì bạn sẽ nhận được kết quả sau:

Hadoop 2.6.0 
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 
e3496499ecb8d220fba99dc5ed4c99c8f9e33bb1 
Compiled by jenkins on 2014-11-13T21:10Z 
Compiled with protoc 2.5.0 
From source with checksum 18e43357c8f927c0695f1e9522859d6a 
This command was run using /home/Hadoop/hadoop/share/hadoop/common/hadoop
common-2.6.0.jar

Bước 2: Khởi động HDFS

Duyệt qua sbin thư mục của Hadoop và bắt đầu yarn và Hadoop dfs (hệ thống tệp phân tán) như hình dưới đây.

cd /$Hadoop_Home/sbin/ 
$ start-dfs.sh 
localhost: starting namenode, logging to /home/Hadoop/hadoop/logs/hadoopHadoop-namenode-localhost.localdomain.out 
localhost: starting datanode, logging to /home/Hadoop/hadoop/logs/hadoopHadoop-datanode-localhost.localdomain.out 
Starting secondary namenodes [0.0.0.0] 
starting secondarynamenode, logging to /home/Hadoop/hadoop/logs/hadoop-Hadoopsecondarynamenode-localhost.localdomain.out
 
$ start-yarn.sh 
starting yarn daemons 
starting resourcemanager, logging to /home/Hadoop/hadoop/logs/yarn-Hadoopresourcemanager-localhost.localdomain.out 
localhost: starting nodemanager, logging to /home/Hadoop/hadoop/logs/yarnHadoop-nodemanager-localhost.localdomain.out

Bước 3: Tạo thư mục trong HDFS

Trong Hadoop DFS, bạn có thể tạo các thư mục bằng lệnh mkdir. Tạo một thư mục mới trong HDFS với tênPig_Data trong đường dẫn bắt buộc như hình dưới đây.

$cd /$Hadoop_Home/bin/ 
$ hdfs dfs -mkdir hdfs://localhost:9000/Pig_Data

Bước 4: Đặt dữ liệu vào HDFS

Tệp đầu vào của Pig chứa từng bộ / bản ghi trong các dòng riêng lẻ. Và các thực thể của bản ghi được phân tách bằng dấu phân cách (Trong ví dụ của chúng tôi, chúng tôi đã sử dụng“,”).

Trong hệ thống tệp cục bộ, hãy tạo một tệp đầu vào student_data.txt chứa dữ liệu như hình dưới đây.

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.

Bây giờ, hãy di chuyển tệp từ hệ thống tệp cục bộ sang HDFS bằng cách sử dụng putlệnh như hình dưới đây. (Bạn có thể dùngcopyFromLocal lệnh cũng vậy.)

$ cd $HADOOP_HOME/bin 
$ hdfs dfs -put /home/Hadoop/Pig/Pig_Data/student_data.txt dfs://localhost:9000/pig_data/

Xác minh tệp

Bạn có thể dùng cat để xác minh xem tệp đã được chuyển vào HDFS hay chưa, như hình dưới đây.

$ cd $HADOOP_HOME/bin
$ hdfs dfs -cat hdfs://localhost:9000/pig_data/student_data.txt

Đầu ra

Bạn có thể xem nội dung của tập tin như hình bên dưới.

15/10/01 12:16:55 WARN util.NativeCodeLoader: Unable to load native-hadoop
library for your platform... using builtin-java classes where applicable
  
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

Người điều hành tải

Bạn có thể tải dữ liệu vào Apache Pig từ hệ thống tệp (HDFS / Local) bằng cách sử dụng LOAD nhà điều hành của Pig Latin.

Cú pháp

Câu lệnh tải bao gồm hai phần được chia bởi toán tử “=”. Ở phía bên trái, chúng ta cần đề cập đến tên của mối quan hệwhere chúng ta muốn lưu trữ dữ liệu và ở phía bên phải, chúng ta phải xác định howchúng tôi lưu trữ dữ liệu. Dưới đây là cú pháp củaLoad nhà điều hành.

Relation_name = LOAD 'Input file path' USING function as schema;

Ở đâu,

  • relation_name - Chúng ta phải đề cập đến mối quan hệ mà chúng ta muốn lưu trữ dữ liệu.

  • Input file path- Chúng ta phải kể đến thư mục HDFS nơi lưu trữ tập tin. (Ở chế độ MapReduce)

  • function - Chúng ta phải chọn một hàm từ tập hợp các hàm tải được cung cấp bởi Apache Pig (BinStorage, JsonLoader, PigStorage, TextLoader).

  • Schema- Chúng ta phải xác định lược đồ của dữ liệu. Chúng ta có thể xác định lược đồ bắt buộc như sau:

(column1 : data type, column2 : data type, column3 : data type);

Note- Chúng tôi tải dữ liệu mà không chỉ định lược đồ. Trong trường hợp đó, các cột sẽ được đánh địa chỉ là $ 01, $ 02, v.v.… (kiểm tra).

Thí dụ

Ví dụ, hãy để chúng tôi tải dữ liệu trong student_data.txt trong Pig dưới giản đồ có tên Student sử dụng LOAD chỉ huy.

Khởi động Pig Grunt Shell

Trước hết, hãy mở thiết bị đầu cuối Linux. Khởi động vỏ Pig Grunt ở chế độ MapReduce như hình dưới đây.

$ Pig –x mapreduce

Nó sẽ khởi động trình bao Pig Grunt như hình dưới đây.

15/10/01 12:33:37 INFO pig.ExecTypeProvider: Trying ExecType : LOCAL
15/10/01 12:33:37 INFO pig.ExecTypeProvider: Trying ExecType : MAPREDUCE
15/10/01 12:33:37 INFO pig.ExecTypeProvider: Picked MAPREDUCE as the ExecType

2015-10-01 12:33:38,080 [main] INFO  org.apache.pig.Main - Apache Pig version 0.15.0 (r1682971) compiled Jun 01 2015, 11:44:35
2015-10-01 12:33:38,080 [main] INFO  org.apache.pig.Main - Logging error messages to: /home/Hadoop/pig_1443683018078.log
2015-10-01 12:33:38,242 [main] INFO  org.apache.pig.impl.util.Utils - Default bootup file /home/Hadoop/.pigbootup not found
  
2015-10-01 12:33:39,630 [main]
INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to hadoop file system at: hdfs://localhost:9000
 
grunt>

Thực hiện câu lệnh tải

Bây giờ hãy tải dữ liệu từ tệp student_data.txt thành Pig bằng cách thực hiện câu lệnh Pig Latin sau trong Grunt shell.

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

Sau đây là mô tả của tuyên bố trên.

Tên quan hệ Chúng tôi đã lưu trữ dữ liệu trong lược đồ student.
Đường dẫn tệp đầu vào Chúng tôi đang đọc dữ liệu từ tệp student_data.txt, nằm trong thư mục / pig_data / của HDFS.
Chức năng lưu trữ Chúng tôi đã sử dụng PigStorage()chức năng. Nó tải và lưu trữ dữ liệu dưới dạng tệp văn bản có cấu trúc. Nó sử dụng một dấu phân tách bằng cách sử dụng mỗi thực thể của một tuple được phân tách, làm tham số. Theo mặc định, nó nhận '\ t' làm tham số.
lược đồ

Chúng tôi đã lưu trữ dữ liệu bằng lược đồ sau.

cột Tôi tên đầu tiên họ điện thoại thành phố
loại dữ liệu int mảng char mảng char mảng char mảng char

Note - Sự loadcâu lệnh sẽ chỉ cần tải dữ liệu vào quan hệ được chỉ định trong Pig. Để xác minh việc thực hiệnLoad tuyên bố, bạn phải sử dụng Diagnostic Operators sẽ được thảo luận trong các chương tiếp theo.