crunch-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gabriel Reid (JIRA)" <>
Subject [jira] [Commented] (CRUNCH-256) SequentialFileNamingScheme should cache the # of files in the target directory after the first read
Date Fri, 23 Aug 2013 06:41:54 GMT


Gabriel Reid commented on CRUNCH-256:

The one potential issue that I can see with this is some kind of situation where you have
two targets that point to the same place, you're using WriteMode.APPEND, and you call run()
multiple times on the pipeline.

For example:

    targetA = To.textFile("output");
    targetB = To.textFile("output");

    pipeline.write(collectionA, targetA, WriteMode.APPEND);
    pipeline.write(collectionB, targetB, WriteMode.APPEND);;
    pipeline.write(collectionC, targetA, WriteMode.APPEND);

I think in that case the contents of collectionB would probably be overwritten with this change.

I think that's a pretty big stretch of a use case though, and I'm wondering if other things
would blow up with that use case before the FileNamingScheme even became an issue.

It looks like we could have some kind of cache invalidation hook on a FileNamingScheme that
is called in FileTargetImpl#handleOutputs, although that feels a bit wrong to me.
> SequentialFileNamingScheme should cache the # of files in the target directory after
the first read
> ---------------------------------------------------------------------------------------------------
>                 Key: CRUNCH-256
>                 URL:
>             Project: Crunch
>          Issue Type: Bug
>    Affects Versions: 0.7.0
>            Reporter: Josh Wills
>            Assignee: Josh Wills
>             Fix For: 0.8.0
>         Attachments: CRUNCH-256.patch
> After a job finishes running, the post-job hooks rename the files from a temp output
directory to the target output directory. When we have lots of files, this move can take a
long time, and I traced the performance issue to the fact that SequentialFileNamingScheme
does a listStatus() on the output directory for every file that gets moved. If SequentialFileNamingScheme
just does this check once and then increments an internal counter, we can significantly decrease
the performance overhead involved with the move.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:

View raw message