[ 
https://issues.apache.org/jira/browse/BEAM-14430?focusedWorklogId=769770&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-769770
 ]

ASF GitHub Bot logged work on BEAM-14430:
-----------------------------------------

                Author: ASF GitHub Bot
            Created on: 12/May/22 17:26
            Start Date: 12/May/22 17:26
    Worklog Time Spent: 10m 
      Work Description: chamikaramj commented on code in PR #17608:
URL: https://github.com/apache/beam/pull/17608#discussion_r871611650


##########
model/pipeline/src/main/proto/org/apache/beam/model/pipeline/v1/beam_runner_api.proto:
##########
@@ -1094,6 +1094,13 @@ message StandardCoders {
   }
 }
 
+message LogicalTypes {

Review Comment:
   Let's add a top level comment as well.



##########
model/pipeline/src/main/proto/org/apache/beam/model/pipeline/v1/beam_runner_api.proto:
##########
@@ -1094,6 +1094,13 @@ message StandardCoders {
   }
 }
 
+message LogicalTypes {

Review Comment:
   Seems like we defined other logical types in comments: 
https://github.com/apache/beam/blob/fd61a90057011270dbf9a36c73b5baaf120100e2/model/pipeline/src/main/proto/org/apache/beam/model/pipeline/v1/beam_runner_api.proto#L1049
   
   For consistency, should we move all definitions here ? 
   
   cc: @TheNeuralBit 



##########
sdks/java/extensions/python/src/main/java/org/apache/beam/sdk/extensions/python/PythonExternalTransform.java:
##########
@@ -179,16 +204,20 @@ Row buildOrGetKwargsRow() {
   // Types that are not one of following are considered custom types.
   // * Java primitives
   // * Type String
+  // * Type PythonCallableSource
+  // * Any Type explicitly annotated by withTypeHint()
   // * Type Row
-  private static boolean isCustomType(java.lang.Class<?> type) {
+  private boolean isCustomType(java.lang.Class<?> type) {
     boolean val =
         !(ClassUtils.isPrimitiveOrWrapper(type)
             || type == String.class
+            || type == PythonCallableSource.class

Review Comment:
   Can this be generalized to all logical types somehow (instead of special 
casing PythonCallableSource) ?



##########
sdks/java/extensions/python/src/main/java/org/apache/beam/sdk/extensions/python/PythonExternalTransform.java:
##########
@@ -162,6 +167,26 @@ public PythonExternalTransform<InputT, OutputT> 
withKwargs(Row kwargs) {
     return this;
   }
 
+  /**
+   * Specifies the field type of arguments.
+   *
+   * <p>Type hints are especially useful for logical types since type 
inference does not work well
+   * for logical types.
+   *
+   * @param argType A class object for the argument type.
+   * @param fieldType A schema field type for the argument.
+   * @return updated wrapper for the cross-language transform.
+   */
+  public PythonExternalTransform<InputT, OutputT> withTypeHint(

Review Comment:
   Should this be per arg instead of per type ? In other words, can the same 
class map to different schema types ?





Issue Time Tracking
-------------------

    Worklog Id:     (was: 769770)
    Time Spent: 2h  (was: 1h 50m)

> Adding a logical type support for Python callables to Row schema
> ----------------------------------------------------------------
>
>                 Key: BEAM-14430
>                 URL: https://issues.apache.org/jira/browse/BEAM-14430
>             Project: Beam
>          Issue Type: New Feature
>          Components: cross-language
>            Reporter: Heejong Lee
>            Assignee: Heejong Lee
>            Priority: P2
>          Time Spent: 2h
>  Remaining Estimate: 0h
>
> Adding a logical type support for Python callables to Row schema



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to