是否有一只相当于“SHOW TABLES”的apache猪?

时间:2013-05-13 19:14:44

标签: hadoop apache-pig

我有一个Hadoop数据存储,我在Pig中访问它并没有很多文档,而且我是Pig的新手,所以我正在寻找猪的“SHOW TABLES”。当我连接到MySQL数据库时,我可以做到这一点并大致了解那里有什么数据;我找到了几个教程,但没有任何意义。如果没有,是否有其他方法可以将自己定位到我一无所知的Hadoop数据存储?

ETA:这是在交互模式下运行Pig时,而不是加载脚本。可能很明显,但我想我应该提一下。

4 个答案:

答案 0 :(得分:4)

我能看到的最接近'show tables'的是'history'命令,它有效地列出了所有创建的别名。

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);

答案 1 :(得分:3)

猪没有表格的概念。它可以读取HDFS文件系统上的任何文件,并将解析后的结果存储在关系中。

请注意,您还可以运行HDFS文件系统commands from the grunt shell

最好先熟悉HDFS并确保首先轻松浏览文件系统,以便找到想要用Pig处理的数据。

答案 2 :(得分: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类型的文件将包含您的数据部分。< / p>

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 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模式。

答案 3 :(得分:-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);