You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by go...@apache.org on 2018/11/13 19:14:51 UTC
[beam] 01/01: Revert "Remove unused is_pair_like hack."
This is an automated email from the ASF dual-hosted git repository.
goenka pushed a commit to branch revert-6956-no-is-pair-like
in repository https://gitbox.apache.org/repos/asf/beam.git
commit 6e8e10848f4e05e3024ac5f2140eeed22a33f156
Author: Ankur <an...@users.noreply.github.com>
AuthorDate: Tue Nov 13 11:14:40 2018 -0800
Revert "Remove unused is_pair_like hack."
---
sdks/python/apache_beam/coders/coders.py | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/sdks/python/apache_beam/coders/coders.py b/sdks/python/apache_beam/coders/coders.py
index 4867ad2b..a17bb08 100644
--- a/sdks/python/apache_beam/coders/coders.py
+++ b/sdks/python/apache_beam/coders/coders.py
@@ -516,6 +516,21 @@ class _PickleCoderBase(FastCoder):
# GroupByKey operations.
return False
+ def as_cloud_object(self, is_pair_like=True):
+ value = super(_PickleCoderBase, self).as_cloud_object()
+ # We currently use this coder in places where we cannot infer the coder to
+ # use for the value type in a more granular way. In places where the
+ # service expects a pair, it checks for the "is_pair_like" key, in which
+ # case we would fail without the hack below.
+ if is_pair_like:
+ value['is_pair_like'] = True
+ value['component_encodings'] = [
+ self.as_cloud_object(is_pair_like=False),
+ self.as_cloud_object(is_pair_like=False)
+ ]
+
+ return value
+
# We allow .key_coder() and .value_coder() to be called on PickleCoder since
# we can't always infer the return values of lambdas in ParDo operations, the
# result of which may be used in a GroupBykey.
@@ -600,6 +615,21 @@ class FastPrimitivesCoder(FastCoder):
else:
return DeterministicFastPrimitivesCoder(self, step_label)
+ def as_cloud_object(self, is_pair_like=True):
+ value = super(FastCoder, self).as_cloud_object()
+ # We currently use this coder in places where we cannot infer the coder to
+ # use for the value type in a more granular way. In places where the
+ # service expects a pair, it checks for the "is_pair_like" key, in which
+ # case we would fail without the hack below.
+ if is_pair_like:
+ value['is_pair_like'] = True
+ value['component_encodings'] = [
+ self.as_cloud_object(is_pair_like=False),
+ self.as_cloud_object(is_pair_like=False)
+ ]
+
+ return value
+
# We allow .key_coder() and .value_coder() to be called on FastPrimitivesCoder
# since we can't always infer the return values of lambdas in ParDo
# operations, the result of which may be used in a GroupBykey.