You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@spark.apache.org by "chenliang (Jira)" <ji...@apache.org> on 2020/12/08 06:34:00 UTC
[jira] [Created] (SPARK-33704) Support latest version of
initialize() in HiveGenericUDTF
chenliang created SPARK-33704:
---------------------------------
Summary: Support latest version of initialize() in HiveGenericUDTF
Key: SPARK-33704
URL: https://issues.apache.org/jira/browse/SPARK-33704
Project: Spark
Issue Type: Bug
Components: SQL
Affects Versions: 2.4.3, 2.3.4, 2.2.0
Reporter: chenliang
For HiveGenericUDTF , there are two initialization methods:
{code:java}
public StructObjectInspector initialize(StructObjectInspector argOIs)
throws UDFArgumentException {
List<? extends StructField> inputFields = argOIs.getAllStructFieldRefs();
ObjectInspector[] udtfInputOIs = new ObjectInspector[inputFields.size()];
for (int i = 0; i < inputFields.size(); i++) {
udtfInputOIs[i] = inputFields.get(i).getFieldObjectInspector();
}
return initialize(udtfInputOIs);
}
@Deprecated
public StructObjectInspector initialize(ObjectInspector[] argOIs)
throws UDFArgumentException {
throw new IllegalStateException("Should not be called directly");
}
{code}
As https://issues.apache.org/jira/browse/HIVE-5737 mentioned, hive provided StructObjectInspector for UDTFs rather than ObjectInspect[], but Spark SQL still only support deprecated function.
An exception will be reported before fix:
Error in query: No handler for UDF/UDAF/UDTF 'FeatureParseUDTF1': java.lang.IllegalStateException: Should not be called directly
Please make sure your function overrides public StructObjectInspector initialize(ObjectInspector[] args).; line 1 pos 7
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@spark.apache.org
For additional commands, e-mail: issues-help@spark.apache.org