program28.yql 1013 B

1234567891011121314151617181920212223242526
  1. (
  2. #comment
  3. (let mr_source (DataSource 'yt 'plato))
  4. (let x (Read! world mr_source (Key '('table (String 'Input))) '('key 'subkey 'value) '()))
  5. (let world (Left! x))
  6. (let table1 (Right! x))
  7. (let keySelector (lambda '(x) (Member x 'key)))
  8. (let listHandler (lambda '(stream) (FlatMap stream (lambda '(pair) (block '(
  9. (let key (Nth pair '0))
  10. (let list (ForwardList (Nth pair '1)))
  11. (let s (Struct))
  12. (let s (AddMember s 'key key))
  13. (let s (AddMember s 'subkey (String '.)))
  14. (let list1 (Take list (Uint64 '5)))
  15. (let list2 (Skip list (Uint64 '1)))
  16. (let x (Concat (Concat (ToString (Length list1)) (String '"_")) (ToString (Length list2))))
  17. (let s (AddMember s 'value (ToString x)))
  18. (let ret (AsList s))
  19. (return ret)
  20. ))))))
  21. (let reducedTable (PartitionByKey table1 keySelector (Void) (Void) listHandler))
  22. (let mr_sink (DataSink 'yt (quote plato)))
  23. (let world (Write! world mr_sink (Key '('table (String 'Output))) reducedTable '('('mode 'append))))
  24. (let world (Commit! world mr_sink))
  25. (return world)
  26. )