0
由於很長時間以來一直存在問題。任何幫助將是可觀的。 所以我在/ home/hadoop/pig目錄中有一個數據集文件。我可以查看該文件,因此沒有權限問題。 數據集有4列由「::」分隔。 我在本地模式下從/ home/hadoop/pig目錄中運行豬。無法在PIG中轉儲關係
ratingsData = LOAD 'ratings.dat' AS (line:chararray);
ratings = FOREACH ratingsData GENERATE FLATTEN(REGEX_EXTRACT_ALL(line,'(.*?)::(.*?)::(.*?)::(.*?)')) AS (uid:int, mid:int, rating:int, timestamp:long);
grouped_mid = GROUP ratings BY mid;
dump grouped_mid;
上述腳本失敗。我可以成功地轉儲'ratingsData'和'rating'關係,但不能將grouped_mid轉儲。但這是奇怪的部分。以下腳本成功運行。
ratingsData = LOAD 'ratings.dat' AS (line:chararray);
ratings = FOREACH ratingsData GENERATE FLATTEN(REGEX_EXTRACT_ALL(line,'(.*?)::(.*?)::(.*?)::(.*?)')) AS (uid:int, mid:int, rating:int, timestamp:long);
STORE ratings INTO 'ratingInfo.txt';
X = LOAD 'ratingInfo.txt' AS (uid:int, mid:int, rating:int, timestamp:long);
grouped_mid = GROUP X BY mid;
dump grouped_mid;
很明顯,第二個腳本有一個冗餘步驟。我只是簡單地存儲一個關係並重新加載它。我想避免這種情況。 任何澄清/解釋將是非常可觀的。
非常感謝。
我在同一個數據集的微(4行)大小的樣本上試過這個。 我手動將VI中的「::」改爲逗號,並使用PigStorage,.ie,將其加載到關係中,但未使用REGEX_EXTRACT_ALL。 它運行良好,我可以轉儲grouped_mid。 –