2013-05-13 58 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模式。

相關問題