我有一个Hadoop数据存储,我在Pig中访问它并没有很多文档,而且我是Pig的新手,所以我正在寻找猪的“SHOW TABLES”。当我连接到MySQL数据库时,我可以做到这一点并大致了解那里有什么数据;我找到了几个教程,但没有任何意义。如果没有,是否有其他方法可以将自己定位到我一无所知的Hadoop数据存储?
ETA:这是在交互模式下运行Pig时,而不是加载脚本。可能很明显,但我想我应该提一下。
答案 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);