[ 
https://issues.apache.org/jira/browse/BEAM-8316?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

gabrywu updated BEAM-8316:
--------------------------
    Status: Triage Needed  (was: Open)

> What is corresponding data type to set in UDF parameter to match RecordType
> ---------------------------------------------------------------------------
>
>                 Key: BEAM-8316
>                 URL: https://issues.apache.org/jira/browse/BEAM-8316
>             Project: Beam
>          Issue Type: Bug
>          Components: dsl-sql
>    Affects Versions: 2.15.0
>            Reporter: Yang Zhang
>            Priority: P3
>
> Hello Beam community, 
> I want to have an UDF to take a record as input. Per error info as shown 
> below, it indicates that the input is *RecordType*, but ** what should I set 
> in the UDF parameter so that Beam would not complain about the type 
> compatibility? Below is the rull error trace. Thank you very much!
>  
> ========error trace===========
> Exception in thread "main" 
> org.apache.beam.sdk.extensions.sql.impl.ParseException: Unable to parse query 
> select fooudf(pv.header) from kafka.tracking.PageViewEvent as pvException in 
> thread "main" org.apache.beam.sdk.extensions.sql.impl.ParseException: Unable 
> to parse query select fooudf(pv.header) from kafka.tracking.PageViewEvent as 
> pv at 
> org.apache.beam.sdk.extensions.sql.impl.CalciteQueryPlanner.convertToBeamRel(CalciteQueryPlanner.java:165)
>  at 
> org.apache.beam.sdk.extensions.sql.impl.BeamSqlEnv.parseQuery(BeamSqlEnv.java:103)
>  at 
> org.apache.beam.sdk.extensions.sql.SqlTransform.expand(SqlTransform.java:124) 
> at 
> org.apache.beam.sdk.extensions.sql.SqlTransform.expand(SqlTransform.java:82) 
> at org.apache.beam.sdk.Pipeline.applyInternal(Pipeline.java:539) at 
> org.apache.beam.sdk.Pipeline.applyTransform(Pipeline.java:473) at 
> org.apache.beam.sdk.values.PBegin.apply(PBegin.java:44) at 
> org.apache.beam.sdk.Pipeline.apply(Pipeline.java:169) at 
> com.linkedin.samza.sql.engine.BeamSqlEntry.preparePipeline(BeamSqlEntry.java:52)
>  at com.linkedin.samza.sql.engine.BeamSqlEntry.exec(BeamSqlEntry.java:41) at 
> com.linkedin.samza.sql.engine.BeamSqlUI.main(BeamSqlUI.java:33)Caused by: 
> org.apache.calcite.tools.ValidationException: 
> org.apache.calcite.runtime.CalciteContextException: From line 1, column 8 to 
> line 1, column 24: No match found for function signature 
> fooudf(<RecordType(INTEGER memberId, VARCHAR viewerUrn, VARCHAR 
> applicationViewerUrn, VARCHAR csUserUrn, BIGINT time, VARCHAR server, VARCHAR 
> service, VARCHAR environment, VARBINARY guid, VARBINARY treeId, INTEGER 
> requestId, VARCHAR impersonatorId, VARCHAR version, VARCHAR instance, VARCHAR 
> appName, VARCHAR testId, VARCHAR testSegmentId, RecordType(BIGINT time, 
> VARCHAR server, VARCHAR instance, VARCHAR appName, VARBINARY messageId, 
> INTEGER auditVersion, VARCHAR fabricUrn, VARCHAR clusterConnectionString) 
> auditHeader, RecordType(VARCHAR pageUrn, VARBINARY trackingId) pageInstance, 
> RecordType(VARCHAR applicationUrn, VARCHAR version, VARBINARY trackingId) 
> clientApplicationInstance, VARCHAR originSource, VARCHAR sessionUrn, 
> RecordType(VARBINARY treeId, INTEGER requestId, INTEGER taskId, VARCHAR 
> rpcTrace, BOOLEAN forceTraceEnabled, (VARCHAR, VARCHAR) MAP context, DOUBLE 
> scaleFactor) traceData)>) at 
> org.apache.calcite.prepare.PlannerImpl.validate(PlannerImpl.java:190) at 
> org.apache.beam.sdk.extensions.sql.impl.CalciteQueryPlanner.convertToBeamRel(CalciteQueryPlanner.java:136)
>  ... 10 moreCaused by: org.apache.calcite.runtime.CalciteContextException: 
> From line 1, column 8 to line 1, column 24: No match found for function 
> signature fooudf(<RecordType(INTEGER memberId, VARCHAR viewerUrn, VARCHAR 
> applicationViewerUrn, VARCHAR csUserUrn, BIGINT time, VARCHAR server, VARCHAR 
> service, VARCHAR environment, VARBINARY guid, VARBINARY treeId, INTEGER 
> requestId, VARCHAR impersonatorId, VARCHAR version, VARCHAR instance, VARCHAR 
> appName, VARCHAR testId, VARCHAR testSegmentId, RecordType(BIGINT time, 
> VARCHAR server, VARCHAR instance, VARCHAR appName, VARBINARY messageId, 
> INTEGER auditVersion, VARCHAR fabricUrn, VARCHAR clusterConnectionString) 
> auditHeader, RecordType(VARCHAR pageUrn, VARBINARY trackingId) pageInstance, 
> RecordType(VARCHAR applicationUrn, VARCHAR version, VARBINARY trackingId) 
> clientApplicationInstance, VARCHAR originSource, VARCHAR sessionUrn, 
> RecordType(VARBINARY treeId, INTEGER requestId, INTEGER taskId, VARCHAR 
> rpcTrace, BOOLEAN forceTraceEnabled, (VARCHAR, VARCHAR) MAP context, DOUBLE 
> scaleFactor) traceData)>) at 
> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at 
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
>  at 
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>  at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at 
> org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:463) 
> at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:787) at 
> org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:772) at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.newValidationError(SqlValidatorImpl.java:4825)
>  at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.handleUnresolvedFunction(SqlValidatorImpl.java:1739)
>  at org.apache.calcite.sql.SqlFunction.deriveType(SqlFunction.java:270) at 
> org.apache.calcite.sql.SqlFunction.deriveType(SqlFunction.java:215) at 
> org.apache.calcite.sql.validate.SqlValidatorImpl$DeriveTypeVisitor.visit(SqlValidatorImpl.java:5584)
>  at 
> org.apache.calcite.sql.validate.SqlValidatorImpl$DeriveTypeVisitor.visit(SqlValidatorImpl.java:5571)
>  at org.apache.calcite.sql.SqlCall.accept(SqlCall.java:138) at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.deriveTypeImpl(SqlValidatorImpl.java:1657)
>  at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.deriveType(SqlValidatorImpl.java:1642)
>  at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.expandSelectItem(SqlValidatorImpl.java:462)
>  at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelectList(SqlValidatorImpl.java:4089)
>  at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3352)
>  at 
> org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:60)
>  at 
> org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84)
>  at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:994)
>  at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:954)
>  at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:216) at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:929)
>  at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:633)
>  at org.apache.calcite.prepare.PlannerImpl.validate(PlannerImpl.java:188) ... 
> 11 moreCaused by: org.apache.calcite.sql.validate.SqlValidatorException: No 
> match found for function signature fooudf(<RecordType(INTEGER memberId, 
> VARCHAR viewerUrn, VARCHAR applicationViewerUrn, VARCHAR csUserUrn, BIGINT 
> time, VARCHAR server, VARCHAR service, VARCHAR environment, VARBINARY guid, 
> VARBINARY treeId, INTEGER requestId, VARCHAR impersonatorId, VARCHAR version, 
> VARCHAR instance, VARCHAR appName, VARCHAR testId, VARCHAR testSegmentId, 
> RecordType(BIGINT time, VARCHAR server, VARCHAR instance, VARCHAR appName, 
> VARBINARY messageId, INTEGER auditVersion, VARCHAR fabricUrn, VARCHAR 
> clusterConnectionString) auditHeader, RecordType(VARCHAR pageUrn, VARBINARY 
> trackingId) pageInstance, RecordType(VARCHAR applicationUrn, VARCHAR version, 
> VARBINARY trackingId) clientApplicationInstance, VARCHAR originSource, 
> VARCHAR sessionUrn, RecordType(VARBINARY treeId, INTEGER requestId, INTEGER 
> taskId, VARCHAR rpcTrace, BOOLEAN forceTraceEnabled, (VARCHAR, VARCHAR) MAP 
> context, DOUBLE scaleFactor) traceData)>) at 
> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at 
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
>  at 
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>  at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at 
> org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:463) 
> at org.apache.calcite.runtime.Resources$ExInst.ex(Resources.java:572) ... 33 
> more



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to