Details

    • Type: New Feature New Feature
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 0.9.0
    • Component/s: impl
    • Labels:
      None
    • Hadoop Flags:
      Reviewed
    • Release Note:
      Hide
      User can specify the a typed map in place of untyped map using the syntax:
      map[type]

      Untyped map still works as before.
      Show
      User can specify the a typed map in place of untyped map using the syntax: map[type] Untyped map still works as before.

      Description

      Currently Pig map type is untyped, which means map value is always of bytearray(ie. unknown) type. In PIG-1277, we allow unknown type to be a shuffle key, which somewhat relieve the problem. However, typed map is still beneficial in that:

      1. User can make semantic use of the map value type. Currently, user need to explicitly cast map value, which is ugly
      2. Though PIG-1277 allow unknown type be a shuffle key, the performance suffers. We don't have a raw comparator for the unknown type, instead, we need to instantiate the value object and invoke its comparator

      Here is proposed syntax for typed map:
      map[type]

      Typed map can be used in place of untyped map could occur. For example:
      a = load '1.txt' as(map[int]);
      b = foreach a generate (map[(i:int)])a0; - - Map value is tuple
      b = stream a through `cat` as (m:map[

      {(i:int,j:chararray)}

      ]); - - Map value is bag

      MapLookup a typed map will result datatype of map value.
      a = load '1.txt' as(map[int]);
      b = foreach a generate $0#'key';

      Schema for b:
      b:

      {int}

      The behavior of untyped map will remain the same.

      1. PIG-1876_3.patch
        40 kB
        Richard Ding
      2. PIG-1876-1.patch
        39 kB
        Daniel Dai
      3. PIG-1876-2.patch
        39 kB
        Daniel Dai

        Issue Links

          Activity

          No work has yet been logged on this issue.

            People

            • Assignee:
              Daniel Dai
              Reporter:
              Daniel Dai
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development