ピッグラテン–基本
Pig Latinは、ApachePigを使用してHadoopのデータを分析するために使用される言語です。この章では、Pig Latinステートメント、データ型、一般演算子と関係演算子、Pig LatinUDFなどのPigLatinの基本について説明します。
ピッグラテン–データモデル
前の章で説明したように、Pigのデータモデルは完全にネストされています。ARelationPigLatinデータモデルの最も外側の構造です。そしてそれはbag ここで−
- バッグはタプルのコレクションです。
- タプルは、順序付けられたフィールドのセットです。
- フィールドはデータの一部です。
ピッグラテン–ステートメット
Pig Latinを使用してデータを処理している間、 statements 基本的な構成です。
これらのステートメントは relations。それらは含まれていますexpressions そして schemas。
すべてのステートメントはセミコロン(;)で終わります。
ピッグラテンが提供する演算子を使用して、ステートメントを通じてさまざまな操作を実行します。
LOADとSTOREを除いて、他のすべての操作を実行している間、Pig Latinステートメントは入力としてリレーションを取り、出力として別のリレーションを生成します。
あなたが入るとすぐに LoadGruntシェルのステートメントでは、そのセマンティックチェックが実行されます。スキーマの内容を表示するには、を使用する必要がありますDumpオペレーター。実行した後のみdump 操作では、データをファイルシステムにロードするためのMapReduceジョブが実行されます。
例
以下に示すのは、ApachePigにデータをロードするPigLatinステートメントです。
grunt> Student_data = LOAD 'student_data.txt' USING PigStorage(',')as
( id:int, firstname:chararray, lastname:chararray, phone:chararray, city:chararray );
Pig Latin –データ型
以下の表に、PigLatinのデータ型を示します。
SN | データ・タイプ | 説明と例 |
---|---|---|
1 | int | 符号付き32ビット整数を表します。 Example :8 |
2 | 長いです | 符号付き64ビット整数を表します。 Example :5L |
3 | 浮く | 符号付き32ビット浮動小数点を表します。 Example :5.5F |
4 | ダブル | 64ビット浮動小数点を表します。 Example :10.5 |
5 | chararray | Unicode UTF-8形式の文字配列(文字列)を表します。 Example : 'チュートリアルポイント' |
6 | Bytearray | バイト配列(blob)を表します。 |
7 | ブール値 | ブール値を表します。 Example : 真/偽。 |
8 | 日付時刻 | 日時を表します。 Example :1970-01-01T00:00:00.000 + 00:00 |
9 | Biginteger | JavaBigIntegerを表します。 Example :60708090709 |
10 | Bigdecimal | JavaBigDecimalを表します Example :185.98376256272893883 |
複雑なタイプ | ||
11 | タプル | タプルは、順序付けられたフィールドのセットです。 Example :(ラジャ、30) |
12 | バッグ | バッグはタプルのコレクションです。 Example :{(raju、30)、(Mohhammad、45)} |
13 | 地図 | マップは、キーと値のペアのセットです。 Example :['名前'# 'ラジュ'、 '年齢'#30] |
ヌル値
上記のすべてのデータ型の値はNULLにすることができます。Apache Pigは、SQLと同様の方法でnull値を処理します。
nullは、不明な値または存在しない値の場合があります。オプション値のプレースホルダーとして使用されます。これらのnullは自然に発生する場合もあれば、操作の結果である場合もあります。
ピッグラテン–算術演算子
次の表に、PigLatinの算術演算子を示します。a = 10およびb = 20と仮定します。
オペレーター | 説明 | 例 |
---|---|---|
+ | Addition −演算子のいずれかの側に値を追加します |
a + bは30を与えます |
− | Subtraction −左側のオペランドから右側のオペランドを減算します |
a −bは-10を与えます |
* | Multiplication −演算子のいずれかの側で値を乗算します |
a * bは200を与えます |
/ | Division −左側のオペランドを右側のオペランドで除算します |
b / aは2を与えます |
% | Modulus −左側のオペランドを右側のオペランドで除算し、余りを返します |
b%aは0を与えます |
?: | Bincond−ブール演算子を評価します。以下に示すように、3つのオペランドがあります。 変数 x =(式)? value1 trueの場合:value2 falseの場合。 |
b =(a == 1)?20:30; a = 1の場合、bの値は20です。 a!= 1の場合、bの値は30です。 |
場合 いつ その後 ELSE END |
Case − case演算子は、ネストされたbincond演算子と同等です。 |
ケースf2%2 WHEN 0 THEN '偶数' WHEN 1 THEN '奇数' 終わり |
ピッグラテン語–比較演算子
次の表に、PigLatinの比較演算子を示します。
オペレーター | 説明 | 例 |
---|---|---|
== | Equal−2つのオペランドの値が等しいかどうかをチェックします。はいの場合、条件は真になります。 |
(a = b)は真ではありません |
!= | Not Equal−2つのオペランドの値が等しいかどうかをチェックします。値が等しくない場合、条件は真になります。 |
(a!= b)は真です。 |
>> | Greater than−左側のオペランドの値が右側のオペランドの値より大きいかどうかを確認します。はいの場合、条件は真になります。 |
(a> b)は正しくありません。 |
< | Less than−左側のオペランドの値が右側のオペランドの値よりも小さいかどうかを確認します。はいの場合、条件は真になります。 |
(a <b)は真です。 |
> = | Greater than or equal to−左側のオペランドの値が右側のオペランドの値以上であるかどうかを確認します。はいの場合、条件は真になります。 |
(a> = b)は正しくありません。 |
<= | Less than or equal to−左のオペランドの値が右のオペランドの値以下かどうかをチェックします。はいの場合、条件は真になります。 |
(a <= b)は真です。 |
マッチス | Pattern matching −左側の文字列が右側の定数と一致するかどうかを確認します。 |
f1は「。* tutorial。*」と一致します |
ピッグラテン–タイプ建設オペレーター
次の表に、PigLatinの型構文演算子を示します。
オペレーター | 説明 | 例 |
---|---|---|
() | Tuple constructor operator −この演算子は、タプルを作成するために使用されます。 |
(ラジュ、30歳) |
{} | Bag constructor operator −この演算子は、バッグを作成するために使用されます。 |
{(ラジュ、30)、(モハマド、45)} |
[] | Map constructor operator −この演算子は、タプルを作成するために使用されます。 |
[名前#ラジャ、年齢#30] |
ピッグラテン–関係演算
次の表に、PigLatinの関係演算子を示します。
オペレーター | 説明 |
---|---|
Loading and Storing | |
負荷 | ファイルシステム(ローカル/ HDFS)からリレーションにデータをロードします。 |
お店 | ファイルシステム(ローカル/ HDFS)との関係を保存します。 |
フィルタリング | |
フィルタ | リレーションから不要な行を削除します。 |
DISTINCT | リレーションから重複する行を削除します。 |
FOREACH、GENERATE | データの列に基づいてデータ変換を生成します。 |
ストリーム | 外部プログラムを使用してリレーションを変換します。 |
グループ化と参加 | |
参加する | 2つ以上の関係に参加すること。 |
COGROUP | データを2つ以上の関係にグループ化すること。 |
グループ | データを単一の関係にグループ化すること。 |
クロス | 2つ以上の関係の外積を作成します。 |
並べ替え | |
注文 | 1つ以上のフィールド(昇順または降順)に基づいてソートされた順序でリレーションを配置します。 |
制限 | リレーションから限られた数のタプルを取得します。 |
結合と分割 | |
連合 | 2つ以上の関係を1つの関係に結合すること。 |
スプリット | 1つのリレーションを2つ以上のリレーションに分割すること。 |
診断オペレーター | |
投げ捨てる | リレーションの内容をコンソールに出力します。 |
DESCRIBE | リレーションのスキーマを説明します。 |
説明 | 関係を計算するための論理、物理、またはMapReduce実行プランを表示します。 |
イラスト | 一連のステートメントの段階的な実行を表示します。 |