3

私はPigでアクセスしているHadoopデータストアを持っていますが、それに関するドキュメントはあまりありません。また、Pigを初めて使用するので、「SHOW TABLES」に相当するPigを探しています。MySQL データベースに接続している場合、これを実行して、そこにあるデータの一般的な感覚をつかむことができます。いくつかのチュートリアルを見つけましたが、適切なものは何もありません。そうでない場合、私が何も知らないHadoopデータストアに自分自身を向ける他の方法はありますか?

ETA: これは、スクリプトをロードするのではなく、インタラクティブ モードで Pig を実行する場合に発生します。当然のことかもしれませんが、言及する必要があると思いました。

4

4 に答える 4

4

「テーブルの表示」に最も近いのは、作成されたすべてのエイリアスを効果的に一覧表示する「履歴」コマンドです。

grunt> history 
1   a = LOAD 'iris.csv' USING PigStorage (',') AS
(sl:double,sw:double,pl:double,pw:double,spec:int);
2   b = FILTER a BY spec==1;
3   c = GROUP b BY pw;
4   d = FOREACH c GENERATE COUNT(b);
于 2013-05-28T22:43:58.920 に答える
3

Pig にはテーブルの概念がありません。HDFS ファイルシステムにある任意のファイルを読み取り、解析結果をリレーションに保存できます。

grunt シェルからHDFS ファイルシステム コマンドを実行することもできます。

最初に HDFS に慣れ、最初にファイルシステムを快適にナビゲートできることを確認して、Pig で処理したいデータを見つけられるようにすることをお勧めします。

于 2013-05-13T21:17:27.720 に答える
0

私たちも同様の状況に遭遇し、stackoverflow のすべてのソリューションを適用しましたが、どれも私の問題を解決していませんでした。これらの問題を解決するには、pig の store コマンドを使用し、専用のフォルダーを用意する必要があります。今、私たちが好むセットアップは、

grunt> fs -mkdir /user/hduser/AllPigTableStructures/                                        
grunt> fs -chmod 777 /user/hduser/AllPigTableStructures/  

ここで、すべてのテーブル情報を「AllPigTableStructures」という名前のこれらのフォルダーに保存します。次に、以下のコードのように「store」関数を使用する必要があります。

grunt> store extract_details into '/user/hduser/AllPigTableStructures/SchemaTwit' using PigStorage('\t', '-schema');

これらのコードの最後の行は

/*2017-09-18 02:13:56,566 [main] INFO  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - Success!
*/

次のような SchemaTwit という名前のフォルダーが表示されるはずです。

grunt> fs -ls /user/hduser/AllPigTableStructures                                                       
Found 12 items
drwxr-xr-x   - hduser supergroup          0 2017-09-18 02:13 /user/hduser/AllPigTableStructures/SchemaTwit

最後に、SchemaTwit ディレクトリのコンテンツが表示される場合は、テーブルのスキーマが含まれます。以下のテーブルに関するすべての詳細はコマンドであり、part-m-xxx の種類のファイルにはデータ部分が含まれます。

grunt> fs -ls /user/hduser/AllPigTableStructures/SchemaTwit
Found 4 items
-rw-r--r--   2 hduser supergroup          8 2017-09-18 02:26 /user/hduser/AllPigTableStructures/SchemaTwit/.pig_header
-rw-r--r--   2 hduser supergroup        239 2017-09-18 02:26 /user/hduser/AllPigTableStructures/SchemaTwit/.pig_schema
-rw-r--r--   2 hduser supergroup          0 2017-09-18 02:26 /user/hduser/AllPigTableStructures/SchemaTwit/_SUCCESS
-rw-r--r--   2 hduser supergroup        140 2017-09-18 02:26 /user/hduser/AllPigTableStructures/SchemaTwit/part-m-00000

これで、以下の cat コマンドをスキーマ ファイルで使用して、データ部分を参照するために part-m-xxx のテーブルのスキーマを表示できます

grunt> fs -cat /user/hduser/AllPigTableStructures/SchemaTwit/.pig_schema
{"fields":[{"name":"id","type":50,"description":"autogenerated from Pig Field Schema","schema":null},{"name":"text","type":50,"description":"autogenerated from Pig Field Schema","schema":null}],"version":0,"sortKeys":[],"sortKeyOrders":[]}

スキーマを使用してテーブルをロードするには、これらのコマンド ヘルプを使用します。

WithSchema = LOAD '/user/hduser/AllPigTableStructures/SchemaTwit';

PS: ブタを mapreduce モードで実行しています。

于 2017-09-18T09:38:18.500 に答える