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 shell 运行 HDFS 文件系统命令

您最好先熟悉 HDFS,并确保您可以先轻松地浏览文件系统,这样您就可以找到想要使用 Pig 处理的数据。

于 2013-05-13T21:17:27.720 回答
0

我们也遇到过类似的情况并应用了 stackoverflow 的所有解决方案,但没有一个解决了我的问题。现在解决这些问题是,你应该使用猪的存储命令,并为其提供专用文件夹。现在我们更喜欢的设置是,

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

现在我们将所有表信息存储到名为“AllPigTableStructures”的文件夹中。然后你应该使用如下代码的“存储”功能,

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 回答
-1

看来你误会猪了。正如@seedhead 所指定的,您使用 Pig 处理文件。人们经常将其误认为是数据库(如 Hbase)或仓库(如 Hive),但事实并非如此。而且,就可视化数据而言,您可以通过 Pig shell 列出文件和目录。如果您需要查看特定文件有多少条记录(或行),您可以执行以下操作:

Records = LOAD '/path_of_the_file';
Records_Group= GROUP Records ALL;
Records_Count = FOREACH Records_Group GENERATE COUNT(Records);
于 2013-05-13T21:47:14.987 回答