US 12,436,786 B2
Parallel processing of data
Craig D. Chambers, Seattle, WA (US); Ashish Raniwala, Bellevue, WA (US); Frances J. Perry, Seattle, WA (US); Stephen R. Adams, Seattle, WA (US); Robert R. Henry, Seattle, WA (US); Robert Bradshaw, Seattle, WA (US); and Nathan Weizenbaum, Seattle, WA (US)
Assigned to Google Inc., Mountain View, CA (US)
Filed by Google LLC, Mountain View, CA (US)
Filed on Jun. 20, 2024, as Appl. No. 18/748,889.
Application 14/033,145 is a division of application No. 12/794,348, filed on Jun. 4, 2010, granted, now 8,555,265, issued on Oct. 8, 2013.
Application 18/748,889 is a continuation of application No. 18/229,450, filed on Aug. 2, 2023, granted, now 12,026,532.
Application 18/229,450 is a continuation of application No. 17/834,256, filed on Jun. 7, 2022, granted, now 11,755,351, issued on Sep. 12, 2023.
Application 17/834,256 is a continuation of application No. 17/009,420, filed on Sep. 1, 2020, granted, now 11,392,398, issued on Jul. 19, 2022.
Application 17/009,420 is a continuation of application No. 16/449,987, filed on Jun. 24, 2019, granted, now 10,795,705, issued on Oct. 6, 2020.
Application 16/449,987 is a continuation of application No. 16/175,925, filed on Oct. 31, 2018, granted, now 10,338,942, issued on Jul. 2, 2019.
Application 16/175,925 is a continuation of application No. 15/483,044, filed on Apr. 10, 2017, granted, now 10,133,592, issued on Nov. 20, 2018.
Application 15/483,044 is a continuation of application No. 14/622,556, filed on Feb. 13, 2015, granted, now 9,626,202, issued on Apr. 18, 2017.
Application 14/622,556 is a continuation of application No. 14/033,145, filed on Sep. 20, 2013, granted, now 8,959,499, issued on Feb. 17, 2015.
Claims priority of provisional application 61/331,148, filed on May 4, 2010.
Prior Publication US 2024/0338235 A1, Oct. 10, 2024
This patent is subject to a terminal disclaimer.
Int. Cl. G06F 9/46 (2006.01); G06F 3/01 (2006.01); G06F 8/30 (2018.01); G06F 8/34 (2018.01); G06F 8/41 (2018.01); G06F 9/30 (2018.01); G06F 9/38 (2018.01); G06F 9/44 (2018.01); G06F 9/445 (2018.01); G06F 9/455 (2018.01); G06F 9/48 (2006.01); G06F 15/00 (2006.01); G06F 21/57 (2013.01); G06F 21/62 (2013.01); G06F 9/448 (2018.01); G06F 16/2453 (2019.01)
CPC G06F 9/45504 (2013.01) [G06F 8/314 (2013.01); G06F 8/34 (2013.01); G06F 8/433 (2013.01); G06F 9/38 (2013.01); G06F 9/3851 (2013.01); G06F 9/3885 (2013.01); G06F 9/44 (2013.01); G06F 9/445 (2013.01); G06F 9/45533 (2013.01); G06F 9/4843 (2013.01); G06F 21/577 (2013.01); G06F 21/62 (2013.01); G06F 21/6218 (2013.01); G06F 9/30 (2013.01); G06F 9/4494 (2018.02); G06F 16/24532 (2019.01); G06F 16/24547 (2019.01); G06F 2221/034 (2013.01)] 16 Claims
OG exemplary drawing
 
1. A method comprising:
receiving an untrusted application that includes a data parallel pipeline, wherein the data parallel pipeline specifies multiple parallel data objects and multiple parallel data operations;
instantiating a first secured processing environment in a native processing environment and on one or more processing modules;
executing the untrusted application to generate a dataflow graph of deferred parallel data objects and deferred parallel operations corresponding to the data parallel pipeline;
communicating information representing the data-flow graph outside of the first secured processing environment;
applying, in the native processing environment, one or more graph transformations to the information representing the dataflow graph to generate a revised dataflow graph that includes one or more of the deferred parallel data objects and deferred, combined parallel data operations that are associated with the untrusted application; and
executing the deferred, combined parallel operations to produce materialized parallel data objects corresponding to the deferred parallel data objects.