私たちも同様の状況に遭遇し、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 モードで実行しています。