Note that there are some explanatory texts on larger screens.

plurals
  1. POcompiled pig move output to input
    primarykey
    data
    text
    <p>I'm trying to run a an embedded Pig script (embeded in Python) where I need to take the output/result of the script and feed it back into script as the input. I'm sure there is an easy way to do this but all the examples seem overly simplistic and are using one column examples. </p> <p>My input looks like this: networkMap.csv:</p> <pre><code>NodeH,4,-0.4 NodeH,5,0.2 NodeO,6,0.1 Link,W_1_4,0.2,1,4 Link,W_1_5,-0.3,1,5 Link,W_2_4,0.4,2,4 Link,W_2_5,0.1,2,5 Link,W_3_4,-0.5,3,4 Link,W_3_5,-0.2,3,5 Link,W_4_6,-0.3,4,6 Link,W_5_6,-0.2,5,6 LR,LR,0.9 Target,Target,1 </code></pre> <p>And lets take a super simple example of what I want to do striping out all of the application logic to just focus on the input/output problem:</p> <pre><code>#!/usr/bin/python from org.apache.pig.scripting import * P = Pig.compile(""" A = LOAD '$input' using PigStorage(',') AS (type:chararray, name:chararray, val:double,iName:chararray,jName:chararray); STORE A INTO '$outFile' USING PigStorage (','); """) params = { 'input': 'networkMap.csv'} for i in range(2): outDir = "out_" + str(i + 1) inputString = "" params["outFile"] = "out_" + str(i + 1) bound = P.bind(params) stats = bound.runSingle() if not stats.isSuccessful(): raise 'failed' params["input"] = stats.result("Output1") </code></pre> <p>I was hoping that I could just say input = output but that doesn't work. I've also tried:</p> <pre><code>input = ""; iter = stats.result("A").iterator() while iter.hasNext(): tuple = iter.next() input = input + "(" +tuple.toDelimitedString(",") + ")" params["input"] = input </code></pre> <p>This did push the output back into the input but then the LOAD function couldn't read it. since it looked like one big reccord - </p> <pre><code>A = LOAD '(NodeI,1,1.0,,)(NodeI,2,0.0,,)(NodeI,3,1.0,,)(NodeH,4,-0.4,,)(NodeH,5,0.2,,)(NodeO,6,0.1,,)(Link,W_1_4,0.2,1,4)(Link,W_1_5,-0.3,1,5)(Link,W_2_4,0.4,2,4)(Link,W_2_5,0.1,2,5)(Link,W_3_4,-0.5,3,4)(Link,W_3_5,-0.2,3,5)(Link,W_4_6,-0.3,4,6)(Link,W_5_6,-0.2,5,6)(LR,LR,0.9,,)(Target,Target,1.0,,)' using PigStorage(',') AS (type:chararray, name:chararray, val:double,iName:chararray,jName:chararray); </code></pre> <p>I'm sure I am missing some simple way of doing this.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload