0
我對Pig很新,所以我可能會用錯誤的方法解決這個問題。我在Hadoop的一個目錄中有一堆gzip文件。我試圖從所有這些文件放在一起大約1000行。它不一定是確切的,所以我想用SAMPLE
。 SAMPLE
需要抽樣一行的概率,而不是我需要的行數,所以我認爲我應該計算所有這些文件中的行數,而不是簡單地將1000除以該數,並將其用作概率。這將起作用,因爲我不需要最後有100行。以下是我走到這一步:從一堆gzip壓縮文件中抽取1000行,使用PIG
raw = LOAD '/data_dir';
cnt = FOREACH (GROUP raw ALL) GENERATE COUNT_STAR(raw);
cntdiv = FOREACH cnt GENERATE (float)100/ct.$0;
現在我不知道如何在SAMPLE
使用值cntdiv
。我試過SAMPLE raw cntdiv
和SAMPLE raw cntdiv.$0
,但它們不起作用。我可以在撥打SAMPLE
時使用該值嗎?也許有更好的方法來完成我想要做的事情?
原來我正在處理一個非常舊的版本的豬,沒有這個功能。我最終將行號保存在一個文件中,然後運行收集樣本的第二份工作。儘管如此,這將適用於更新的版本。 – mck
如果你需要自己的版本,因爲你的豬是舊的,你總是可以'加入'單行號到所有行'USING'replicated'',然後'FILTER'是否隨機數是否小於你的閾。可以爲你節省一些時間/額外的文件。 –