Discussions
Stay up-to-date with the latest news from NetSuite. You’ll be in the know about how to connect with peers and take your business to new heights at our virtual, in-person, on demand events, and much more.
Now is the time to ask your NetSuite-savvy friends and colleagues to join the NetSuite Support Community! Refer now! Click here to watch and learn more!
Stay in the Know
Be sure you're subscribed to NetSuite communication to stay in the know about monthly happenings, updates and announcements. Subscribe
Be sure you're subscribed to NetSuite communication to stay in the know about monthly happenings, updates and announcements. Subscribe
Map/Reduce Unexpected Type Conversions
I am building a very simple prototype Map/Reduce script just to get an idea of the data flow through each phase. I am seeing what I consider unexpected behaviour when passing data from the map phase to the reduce phase. It seems that no matter what type of data is written to the context during map, it will always come out as Strings during reduce.
Consider the following code (the module define and return object have been removed for brevity, but they are correct):
/** * The input data is just a list of Strings. */ function getInputData() { return ["a", "string", "array", "for", "testing", "data"]; } /** * The map phase gets the length of each String from the input data and * writes it back to the context in three different formats: Number, String, * Object */ function map(context) { log.debug(arguments.callee.name, context); context.write('numberData', context.value.length); context.write('stringData', context.value.length.toString()); context.write('objectData', {'length' : context.value.length}); } /** * The reduce phase currently just logs what it receives */ function reduce(context) { log.debug(arguments.callee.name + ':' + context.key, context.values); } function summarize(summary) { log.debug(arguments.callee.name, summary); } 0