2017-06-29 50 views
-2

這是我的數據集 品牌名稱其次是價格在$符號我是在豬編程,我會加載下面的數據集

Apple iPhone 6s Plus 16GB Space Gray T-Mobile Smartphone 2 cases + Box: 
Iphone 6s 16gb rose gold factory unlocked:$280 
iPhone 6s 64gb T-Mobile:$350 
Iphone 6S Plus 64 GB Space Gray Sprint International Unlocked:$385 
iPhone 6s plus 64gb unlocked.:$600 

,當我使用此命令加載此數據:

grunt> scrap1 = LOAD '/user/vickysmartboy15/hadoop-test1/scrap.txt' USING org.apache.pig.piggybank.storage.MyRegExLoader('([^\\:]+):([^\\:])') as (Name:chararray, price:chararray); 

使用查看數據後:轉儲操作

我的結果是這樣

(Apple iPhone 6s Plus 16GB Space Gray T-Mobile Smartphone 2 cases + Box,$) 

(Iphone 6s 16gb rose gold factory unlocked,$) 

(iPhone 6s 64gb T-Mobile,$) 

(Iphone 6S Plus 64 GB Space Gray Sprint International Unlocked,$) 

(BRAND NEW Apple iPhone 6S 32Gb Silver Verizon UNLOCKED Clean ESN,$) 

(iPhone 6s plus 64gb unlocked.,$) 

只有$不顯示編號。

我該如何解決這個問題?

+0

發生了什麼錯誤? – TKHN

+0

Sry對於上一個問題,這是實際發生的事情。 – vicky15

+0

在第一行中,':'後面沒有任何內容。沒有價格。請用正確的數據更新問題。另外,使用'PigStorage(':')'而不是使用RegEx加載器,你應該沒問題。 – philantrovert

回答

0
scrap1 = LOAD '/var/opt/teradata/home/fsbappdev/ashish/scrap.txt' using PigStorage(':') AS (Name:chararray, price:chararray); 

dump scrap1會給你下面的數據,我希望這是預期的。

(Apple iPhone 6s Plus 16GB Space Gray T-Mobile Smartphone 2 cases + Box,)

(Iphone 6s 16gb rose gold factory unlocked,$280)

(iPhone 6s 64gb T-Mobile,$350)

(Iphone 6S Plus 64 GB Space Gray Sprint International Unlocked,$385)

(iPhone 6s plus 64gb unlocked.,$600)

如果要刪除$簽名就可以使用未來的關係就像

scrap2 = foreach scrap1 generate Name, REPLACE(price,'\\\$','') 
+0

謝謝這個幫助。但我只是想過濾的價格水平就像最高價格,最低價格平均等我不能做計算這一個數據類型是chararray。所以我使用以下方法將CONVERT CHARARRAY TO INT。 – vicky15

+0

grunt> scrap2 = foreach scrap generate Name,REPLACE(price,'\\\ $',''); grunt> tab = FOREACH scrap GENERATE $ 0作爲名稱:chararray,$ 1作爲價格:int; grunt> fil = FILTER tab BY(prices == 450); grunt> dump fil;但我得到了一些錯誤///]:java.lang.ClassCastException:java.lang.Integer不能轉換爲java.lang.String – vicky15

+0

sry在我的FOREACH查詢中,一個是scrap2而不是一個廢品(錯誤類型) – vicky15

相關問題