2013-05-13 83 views
2

我有一个Hadoop数据存储,我在Pig中访问,并没有很多关于它的文档,再加上我是Pig的新手,所以我正在寻找Pig的“SHOW TABLES”。当我连接到一个MySQL数据库时,我可以做到这一点,并获得有关数据的一般意义;我发现了几个教程,但没有任何关键。如果没有,有没有其他方法可以将我自己定位到我一无所知的Hadoop数据存储?是否有一个相当于“SHOW TABLES”的apache猪?

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

回答

3

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

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

这也可能是你最好先熟悉HDFS,并确保您可以轻松浏览文件系统的第一,所以你可以找到你想要用猪来处理什么数据。

+0

您可以结算HCatalog以获得类似配置单元的模式支持。 – ihadanny 2013-05-13 21:49:35

+0

我JUST认为它不是一个数据存储,它是一个文件系统。我一直称它为数据存储,我的丈夫最终告诉我停止这样做,因为它很混乱。这是一个文件系统。我可以做文件系统命令! DERP!谢谢@seedhead – barclay 2013-05-14 18:42:35

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

你只是重申了我的问题('你可以通过Pig shell列出文件和目录')并且不用回答。好的,怎么样? – barclay 2013-05-14 15:10:43

+0

这是怎么回事?你看过@seedhead指定的链接吗?它显示了如何从grunt shell运行HDFS文件系统命令。 – Tariq 2013-05-14 15:21:10

3

我可以看到“节目表”最接近的事是“历史”命令,它有效地列出了所有创建的别名。

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

我们也遇到了类似的情况,并应用于计算器的所有解决方案,但没有已经解决了我的问题。现在解决这些问题的方法是,您应该使用猪的存储命令并为其提供专用文件夹。 现在成立了,我们宁愿是,

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目录的内容,那么它将包含你的表格的模式,下面关于你的表格的所有细节都是它的命令, -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命令在模式文件,看看你的一部分,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模式。

相关问题