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.
|
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.