日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)ApachePig教程:ApachePig加載數(shù)據(jù)

一般來說,Apache Pig在Hadoop之上工作。它是一種分析工具,用于分析 Hadoop File System中存在的大型數(shù)據(jù)集。要使用Apache Pig分析數(shù)據(jù),我們必須首先將數(shù)據(jù)加載到Apache Pig中。本章介紹如何從HDFS將數(shù)據(jù)加載到Apache Pig。

湞江ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!

準備HDFS

在MapReduce模式下,Pig從HDFS讀?。虞d)數(shù)據(jù)并將結(jié)果存回HDFS。因此,讓我們先從HDFS開始,在HDFS中創(chuàng)建以下示例數(shù)據(jù)。

學生ID 名字 姓氏 電話號碼 城市
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

上述數(shù)據(jù)集包含六個學生的個人詳細信息,如id,名字,姓氏,電話號碼和城市。

步驟1:驗證Hadoop

首先,使用Hadoop version命令驗證安裝,如下所示。

$ hadoop version

如果你的系統(tǒng)里有Hadoop,并且已設(shè)置PATH變量,那么你將獲得以下輸出 -

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

步驟2:啟動HDFS

瀏覽Hadoop的 sbin 目錄,并啟動 yarn 和Hadoop dfs(分布式文件系統(tǒng)),如下所示。

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

步驟3:在HDFS中創(chuàng)建目錄

在Hadoop DFS中,可以使用 mkdir 命令創(chuàng)建目錄。在HDFS所需路徑中創(chuàng)建一個名為 Pig_Data 的新目錄,如下所示。

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

步驟4:將數(shù)據(jù)放在HDFS中

Pig的輸入文件包含單個行中的每個元組/記錄。記錄的實體由分隔符分隔(在我們的示例中,我們使用“,”)。在本地文件系統(tǒng)中,創(chuàng)建一個包含數(shù)據(jù)的輸入文件 student_data.txt ,如下所示。

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.

現(xiàn)在,使用 put 命令將文件從本地文件系統(tǒng)移動到HDFS,如下所示。(你也可以使用 copyFromLocal 命令。)

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

驗證文件

使用 cat 命令驗證文件是否已移入HDFS,如下所示。

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

輸出

現(xiàn)在,可以看到文件的內(nè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

Load運算符

你可以使用 Pig Latin LOAD 運算符,從文件系統(tǒng)(HDFS / Local)將數(shù)據(jù)加載到Apache Pig中。

語法

load語句由兩部分組成,用“=”運算符分隔。在左側(cè),需要提到我們想要存儲數(shù)據(jù)的關(guān)系的名稱;而在右側(cè),我們需要定義如何存儲數(shù)據(jù)。下面給出了 Load 運算符的語法。

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

說明:

  • relation_name - 我們必須提到要存儲數(shù)據(jù)的關(guān)系。

  • Input file path - 我們必須提到存儲文件的HDFS目錄。(在MapReduce模式下)

  • function - 我們必須從Apache Pig提供的一組加載函數(shù)中選擇一個函數(shù)( BinStorage,JsonLoader,PigStorage,TextLoader )。

  • Schema - 我們必須定義數(shù)據(jù)的模式,可以定義所需的模式如下 -

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

注意:我們加載數(shù)據(jù)而不指定模式。在這種情況下,列將被尋址為$01,$02,等...(檢查)。

例如,我們使用 LOAD 命令,在名為學生的模式下在Pig中的 student_data.txt 加載數(shù)據(jù)。

啟動Pig Grunt Shell

首先,打開Linux終端。在MapReduce模式下啟動Pig Grunt shell,如下所示。

$ Pig –x mapreduce

它將啟動Pig Grunt shell,如下所示。

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>

執(zhí)行Load語句

現(xiàn)在,通過在Grunt shell中執(zhí)行以下Pig Latin語句,將文件 student_data.txt 中的數(shù)據(jù)加載到Pig中。

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

以下是對上述說明的描述。

Relation name 我們已將數(shù)據(jù)存儲在學生(student)模式中。
Input file path 我們從HDFS的/pig_data/目錄中的 student_data.txt 文件讀取數(shù)據(jù)。
Storage function 我們使用了 PigStorage() 函數(shù),將數(shù)據(jù)加載并存儲為結(jié)構(gòu)化文本文件。它采用分隔符,使用元組的每個實體作為參數(shù)分隔。默認情況下,它以“\t"作為參數(shù)。
schema

我們已經(jīng)使用以下模式存儲了數(shù)據(jù)。

column id 名字 姓氏 電話號碼 城市
datatype int char array char array char array char array

注意: Load語句會簡單地將數(shù)據(jù)加載到Pig的指定的關(guān)系中。要驗證Load語句的執(zhí)行情況,必須使用Diagnostic運算符,這將在后續(xù)的章節(jié)中討論。


網(wǎng)站名稱:創(chuàng)新互聯(lián)ApachePig教程:ApachePig加載數(shù)據(jù)
URL鏈接:http://www.dlmjj.cn/article/dhgcigo.html