You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@beam.apache.org by "Adam Ziolkowski (Jira)" <ji...@apache.org> on 2022/04/20 23:19:00 UTC
[jira] [Commented] (BEAM-11578) `dataflow_metrics` (python) fails with TypeError (when int overflowing?)
[ https://issues.apache.org/jira/browse/BEAM-11578?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17525347#comment-17525347 ]
Adam Ziolkowski commented on BEAM-11578:
----------------------------------------
Howdy - I'm hoping that commenting on this ticket gets it some additional visibility. This bug fix would be super valuable. Thanks!
> `dataflow_metrics` (python) fails with TypeError (when int overflowing?)
> ------------------------------------------------------------------------
>
> Key: BEAM-11578
> URL: https://issues.apache.org/jira/browse/BEAM-11578
> Project: Beam
> Issue Type: Bug
> Components: sdk-py-core
> Affects Versions: 2.25.0
> Reporter: Romain Yon
> Priority: P1
>
> Hi all,
> It seems like the python beam job I'm running is failing because of a bug in beam's metrics.
> The logic of the job appears to work and the final output is successfully being written on GCS, but the dataflow job throws and error and has a failed status:
> ```
> Traceback (most recent call last):
> File "path/to/my/code.py", line 11, in <module>
> MyJob().run()
> File "/path/to/my/lib.py", line 173, in run
> for c in result.metrics().query()["counters"]
> File "/usr/local/lib/python3.7/site-packages/apache_beam/runners/dataflow/dataflow_metrics.py", line 261, in query
> self._populate_metrics(response, metric_results, user_metrics=True)
> File "/usr/local/lib/python3.7/site-packages/apache_beam/runners/dataflow/dataflow_metrics.py", line 188, in _populate_metrics
> attempted = self._get_metric_value(metric['tentative'])
> File "/usr/local/lib/python3.7/site-packages/apache_beam/runners/dataflow/dataflow_metrics.py", line 224, in _get_metric_value
> lambda x: x.key == 'sum').value.double_value)
> TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
> ```
> Note that prior to this stacktrace, there is a logging entry:
> ```
> {"severity": "INFO", "message": "Distribution metric sum value seems to have overflowed integer_value range, the correctness of sum or mean value may not be guaranteed: <JsonValue\\n object_value: <JsonObject\\n properties: [<Property\\n key: \'count\'\\n value: <JsonValue\\n integer_value: 96>>, <Property\\n key: \'mean\'\\n value: <JsonValue\\n integer_value: 0>>, <Property\\n key: \'max\'\\n value: <JsonValue\\n integer_value: 0>>, <Property\\n key: \'min\'\\n value: <JsonValue\\n integer_value: 0>>, <Property\\n key: \'sum\'\\n value: <JsonValue\\n integer_value: 0>>]>>"}
> ```
> I guess there seems to be an issue while casting the overflowing int to a double.
> (Note: We don't really have control over the number of events being fired since the metrics are emitted by `tensorflow_transform.beam.TransformDataset`)
--
This message was sent by Atlassian Jira
(v8.20.7#820007)