parameters: (*pcollections, **options)
docstring: 对多个输入SchemaPCollection，根据指定的字段(dict)对SchemaPCollection做内连接操作,
      连接结果为(fields, (value1, value2, ..., value n)), 若第m个SchemaPCollection没有元素,
      则value m为None
  
      Args:
          *pcollection (SchemaPCollection): 输入的多个SchemaPCollection
          **options: 配置选项，需要配置fields=str/tuple/list(一个列表、元组、一个逗号分隔的字符串，表示指定的字段)
  
      Returns:
          SchemaPCollection: 连接结果
  
      Examples:
          >>> from bigflow import base, schema, transforms
          >>> p = base.Pipeline.create('local')
          >>> p1 = p.parallelize([('a', 2), ('e', 4), ('c', 6)])
  		>>> sp1 = p1.apply(schema.tuple_to_dict, ['websites', 'clicknum'])
          >>> p2 = p.parallelize([('a', 9), ('b', 8), ('d', 7)])
  		>>> sp2 = p2.apply(schema.tuple_to_dict, ['websites', 'click'])
  		>>> csp = sp1.apply(schema.full_join, sp2, fields=['websites'])
  		>>> csp.get()
  		输出结果为：
          [({'clicknum': 4, 'websites': 'e'}, {'click': None, 'websites': None}),
           ({'clicknum': None, 'websites': None}, {'click': 8, 'websites': 'b'}),
           ({'clicknum': None, 'websites': None}, {'click': 7, 'websites': 'd'}),
           ({'clicknum': 2, 'websites': 'a'}, {'click': 9, 'websites': 'a'}),
           ({'clicknum': 6, 'websites': 'c'}, {'click': None, 'websites': None})]
docstring_summary: 对多个输入SchemaPCollection，根据指定的字段(dict)对SchemaPCollection做内连接操作,
      连接结果为(fields, (value1, value2, ..., value n)), 若第m个SchemaPCollection没有元素,
      则value m为None
docstring_tokens: 对多个输入SchemaPCollection，根据指定的字段 ( dict ) 对SchemaPCollection做内连接操作 连接结果为 ( fields ( value1 value2 ... value n )) 若第m个SchemaPCollection没有元素 则value m为None
function: def full_join(*pcollections, **options):
      """
      对多个输入SchemaPCollection，根据指定的字段(dict)对SchemaPCollection做内连接操作,
      连接结果为(fields, (value1, value2, ..., value n)), 若第m个SchemaPCollection没有元素,
      则value m为None
  
      Args:
          *pcollection (SchemaPCollection): 输入的多个SchemaPCollection
          **options: 配置选项，需要配置fields=str/tuple/list(一个列表、元组、一个逗号分隔的字符串，表示指定的字段)
  
      Returns:
          SchemaPCollection: 连接结果
  
      Examples:
          >>> from bigflow import base, schema, transforms
          >>> p = base.Pipeline.create('local')
          >>> p1 = p.parallelize([('a', 2), ('e', 4), ('c', 6)])
  		>>> sp1 = p1.apply(schema.tuple_to_dict, ['websites', 'clicknum'])
          >>> p2 = p.parallelize([('a', 9), ('b', 8), ('d', 7)])
  		>>> sp2 = p2.apply(schema.tuple_to_dict, ['websites', 'click'])
  		>>> csp = sp1.apply(schema.full_join, sp2, fields=['websites'])
  		>>> csp.get()
  		输出结果为：
          [({'clicknum': 4, 'websites': 'e'}, {'click': None, 'websites': None}),
           ({'clicknum': None, 'websites': None}, {'click': 8, 'websites': 'b'}),
           ({'clicknum': None, 'websites': None}, {'click': 7, 'websites': 'd'}),
           ({'clicknum': 2, 'websites': 'a'}, {'click': 9, 'websites': 'a'}),
           ({'clicknum': 6, 'websites': 'c'}, {'click': None, 'websites': None})]
  
      """
      if len(pcollections) < 2:
          raise ValueError("require at least 2 pcollections")
  
      fields = options.get('fields', None)
      from bigflow import schema_pcollection
      pc = transforms.full_join(*_check_set_args(fields, pcollections))
      none_dict = _get_none_dict(pcollections)
      ret = schema_pcollection.SchemaPCollection(pc.apply(transforms.map,
          lambda tp: _none_to_dict(tp, none_dict), serde=_value_serde(pc.serde())))
  
      # default: merge = False, don't merge the result
      merge = options.get("merge", False)
      if not merge:
          return ret
      else:
          return _merge_result_after_join(ret, "full_join")
function_tokens: def full_join ( * pcollections , * * options ) : if len ( pcollections ) < 2 : raise ValueError ( "require at least 2 pcollections" ) fields = options . get ( 'fields' , None ) from bigflow import schema_pcollection pc = transforms . full_join ( * _check_set_args ( fields , pcollections ) ) none_dict = _get_none_dict ( pcollections ) ret = schema_pcollection . SchemaPCollection ( pc . apply ( transforms . map , lambda tp : _none_to_dict ( tp , none_dict ) , serde = _value_serde ( pc . serde ( ) ) ) ) # default: merge = False, don't merge the result merge = options . get ( "merge" , False ) if not merge : return ret else : return _merge_result_after_join ( ret , "full_join" )