我有一個Hadoop數據存儲,我在Pig中訪問,並沒有很多關於它的文檔,再加上我是Pig的新手,所以我正在尋找Pig的「SHOW TABLES」。當我連接到一個MySQL數據庫時,我可以做到這一點,並獲得有關數據的一般意義;我發現了幾個教程,但沒有任何關鍵。如果沒有,有沒有其他方法可以將我自己定位到我一無所知的Hadoop數據存儲?是否有一個相當於「SHOW TABLES」的apache豬?
ETA:這會在交互模式下運行Pig而不是加載腳本。可能很明顯,但我想我應該提及它。
我有一個Hadoop數據存儲,我在Pig中訪問,並沒有很多關於它的文檔,再加上我是Pig的新手,所以我正在尋找Pig的「SHOW TABLES」。當我連接到一個MySQL數據庫時,我可以做到這一點,並獲得有關數據的一般意義;我發現了幾個教程,但沒有任何關鍵。如果沒有,有沒有其他方法可以將我自己定位到我一無所知的Hadoop數據存儲?是否有一個相當於「SHOW TABLES」的apache豬?
ETA:這會在交互模式下運行Pig而不是加載腳本。可能很明顯,但我想我應該提及它。
豬沒有表的概念。它可以讀取HDFS文件系統上的任何文件,並將解析結果存儲在關係中。
請注意,您也可以運行HDFS文件系統commands from the grunt shell
這也可能是你最好先熟悉HDFS,並確保您可以輕鬆瀏覽文件系統的第一,所以你可以找到你想要用豬來處理什麼數據。
看起來你錯了豬。正如@ 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);
我可以看到「節目表」最接近的事是「歷史」命令,它有效地列出了所有創建的別名。
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);
我們也遇到了類似的情況,並應用於計算器的所有解決方案,但沒有已經解決了我的問題。現在解決這些問題的方法是,您應該使用豬的存儲命令併爲其提供專用文件夾。 現在成立了,我們寧願是,
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模式。
您可以結算HCatalog以獲得類似配置單元的模式支持。 – ihadanny 2013-05-13 21:49:35
我JUST認爲它不是一個數據存儲,它是一個文件系統。我一直稱它爲數據存儲,我的丈夫最終告訴我停止這樣做,因爲它很混亂。這是一個文件系統。我可以做文件系統命令! DERP!謝謝@seedhead – barclay 2013-05-14 18:42:35