Dinesh Man Amatya created SPARK-20176:
-----------------------------------------
Summary: Spark Dataframe UDAF issue
Key: SPARK-20176
URL: https://issues.apache.org/jira/browse/SPARK-20176
Project: Spark
Issue Type: IT Help
Components: Spark Core
Affects Versions: 2.0.2
Reporter: Dinesh Man Amatya
Getting following error in custom UDAF
Error while decoding: java.util.concurrent.ExecutionException:
java.lang.Exception: failed to compile:
org.codehaus.commons.compiler.CompileException: File 'generated.java', Line 58,
Column 33: Incompatible expression types "boolean" and "java.lang.Boolean"
/* 001 */ public java.lang.Object generate(Object[] references) {
/* 002 */ return new SpecificSafeProjection(references);
/* 003 */ }
/* 004 */
/* 005 */ class SpecificSafeProjection extends
org.apache.spark.sql.catalyst.expressions.codegen.BaseProjection {
/* 006 */
/* 007 */ private Object[] references;
/* 008 */ private MutableRow mutableRow;
/* 009 */ private Object[] values;
/* 010 */ private Object[] values1;
/* 011 */ private org.apache.spark.sql.types.StructType schema;
/* 012 */ private org.apache.spark.sql.types.StructType schema1;
/* 013 */
/* 014 */
/* 015 */ public SpecificSafeProjection(Object[] references) {
/* 016 */ this.references = references;
/* 017 */ mutableRow = (MutableRow) references[references.length - 1];
/* 018 */
/* 019 */
/* 020 */ this.schema = (org.apache.spark.sql.types.StructType)
references[0];
/* 021 */ this.schema1 = (org.apache.spark.sql.types.StructType)
references[1];
/* 022 */ }
/* 023 */
/* 024 */ public java.lang.Object apply(java.lang.Object _i) {
/* 025 */ InternalRow i = (InternalRow) _i;
/* 026 */
/* 027 */ values = new Object[2];
/* 028 */
/* 029 */ boolean isNull2 = i.isNullAt(0);
/* 030 */ UTF8String value2 = isNull2 ? null : (i.getUTF8String(0));
/* 031 */
/* 032 */ boolean isNull1 = isNull2;
/* 033 */ final java.lang.String value1 = isNull1 ? null :
(java.lang.String) value2.toString();
/* 034 */ isNull1 = value1 == null;
/* 035 */ if (isNull1) {
/* 036 */ values[0] = null;
/* 037 */ } else {
/* 038 */ values[0] = value1;
/* 039 */ }
/* 040 */
/* 041 */ boolean isNull5 = i.isNullAt(1);
/* 042 */ InternalRow value5 = isNull5 ? null : (i.getStruct(1, 2));
/* 043 */ boolean isNull3 = false;
/* 044 */ org.apache.spark.sql.Row value3 = null;
/* 045 */ if (!false && isNull5) {
/* 046 */
/* 047 */ final org.apache.spark.sql.Row value6 = null;
/* 048 */ isNull3 = true;
/* 049 */ value3 = value6;
/* 050 */ } else {
/* 051 */
/* 052 */ values1 = new Object[2];
/* 053 */
/* 054 */ boolean isNull10 = i.isNullAt(1);
/* 055 */ InternalRow value10 = isNull10 ? null : (i.getStruct(1, 2));
/* 056 */
/* 057 */ boolean isNull9 = isNull10 || false;
/* 058 */ final boolean value9 = isNull9 ? false : (Boolean)
value10.isNullAt(0);
/* 059 */ boolean isNull8 = false;
/* 060 */ double value8 = -1.0;
/* 061 */ if (!isNull9 && value9) {
/* 062 */
/* 063 */ final double value12 = -1.0;
/* 064 */ isNull8 = true;
/* 065 */ value8 = value12;
/* 066 */ } else {
/* 067 */
/* 068 */ boolean isNull14 = i.isNullAt(1);
/* 069 */ InternalRow value14 = isNull14 ? null : (i.getStruct(1, 2));
/* 070 */ boolean isNull13 = isNull14;
/* 071 */ double value13 = -1.0;
/* 072 */
/* 073 */ if (!isNull14) {
/* 074 */
/* 075 */ if (value14.isNullAt(0)) {
/* 076 */ isNull13 = true;
/* 077 */ } else {
/* 078 */ value13 = value14.getDouble(0);
/* 079 */ }
/* 080 */
/* 081 */ }
/* 082 */ isNull8 = isNull13;
/* 083 */ value8 = value13;
/* 084 */ }
/* 085 */ if (isNull8) {
/* 086 */ values1[0] = null;
/* 087 */ } else {
/* 088 */ values1[0] = value8;
/* 089 */ }
/* 090 */
/* 091 */ boolean isNull17 = i.isNullAt(1);
/* 092 */ InternalRow value17 = isNull17 ? null : (i.getStruct(1, 2));
/* 093 */
/* 094 */ boolean isNull16 = isNull17 || false;
/* 095 */ final boolean value16 = isNull16 ? false : (Boolean)
value17.isNullAt(1);
/* 096 */ boolean isNull15 = false;
/* 097 */ double value15 = -1.0;
/* 098 */ if (!isNull16 && value16) {
/* 099 */
/* 100 */ final double value19 = -1.0;
/* 101 */ isNull15 = true;
/* 102 */ value15 = value19;
/* 103 */ } else {
/* 104 */
/* 105 */ boolean isNull21 = i.isNullAt(1);
/* 106 */ InternalRow value21 = isNull21 ? null : (i.getStruct(1, 2));
/* 107 */ boolean isNull20 = isNull21;
/* 108 */ double value20 = -1.0;
/* 109 */
/* 110 */ if (!isNull21) {
/* 111 */
/* 112 */ if (value21.isNullAt(1)) {
/* 113 */ isNull20 = true;
/* 114 */ } else {
/* 115 */ value20 = value21.getDouble(1);
/* 116 */ }
/* 117 */
/* 118 */ }
/* 119 */ isNull15 = isNull20;
/* 120 */ value15 = value20;
/* 121 */ }
/* 122 */ if (isNull15) {
/* 123 */ values1[1] = null;
/* 124 */ } else {
/* 125 */ values1[1] = value15;
/* 126 */ }
/* 127 */
/* 128 */ final org.apache.spark.sql.Row value7 = new
org.apache.spark.sql.catalyst.expressions.GenericRowWithSchema(values1, schema);
/* 129 */ isNull3 = false;
/* 130 */ value3 = value7;
/* 131 */ }
/* 132 */ if (isNull3) {
/* 133 */ values[1] = null;
/* 134 */ } else {
/* 135 */ values[1] = value3;
/* 136 */ }
/* 137 */
/* 138 */ final org.apache.spark.sql.Row value = new
org.apache.spark.sql.catalyst.expressions.GenericRowWithSchema(values, schema1);
/* 139 */ if (false) {
/* 140 */ mutableRow.setNullAt(0);
/* 141 */ } else {
/* 142 */
/* 143 */ mutableRow.update(0, value);
/* 144 */ }
/* 145 */
/* 146 */ return mutableRow;
/* 147 */ }
/* 148 */ }
createexternalrow(input[0, string, true].toString, if (isnull(input[1,
struct<totalRxPaid:double,totalRxAllowedAmt:double>, true])) null else
createexternalrow(if (input[1,
struct<totalRxPaid:double,totalRxAllowedAmt:double>, true].isNullAt) null else
input[1, struct<totalRxPaid:double,totalRxAllowedAmt:double>,
true].totalRxPaid, if (input[1,
struct<totalRxPaid:double,totalRxAllowedAmt:double>, true].isNullAt) null else
input[1, struct<totalRxPaid:double,totalRxAllowedAmt:double>,
true].totalRxAllowedAmt, StructField(totalRxPaid,DoubleType,true),
StructField(totalRxAllowedAmt,DoubleType,true)),
StructField(dw_member_id,StringType,true),
StructField(test,StructType(StructField(totalRxPaid,DoubleType,true),
StructField(totalRxAllowedAmt,DoubleType,true)),true))
:- input[0, string, true].toString
: +- input[0, string, true]
+- if (isnull(input[1, struct<totalRxPaid:double,totalRxAllowedAmt:double>,
true])) null else createexternalrow(if (input[1,
struct<totalRxPaid:double,totalRxAllowedAmt:double>, true].isNullAt) null else
input[1, struct<totalRxPaid:double,totalRxAllowedAmt:double>,
true].totalRxPaid, if (input[1,
struct<totalRxPaid:double,totalRxAllowedAmt:double>, true].isNullAt) null else
input[1, struct<totalRxPaid:double,totalRxAllowedAmt:double>,
true].totalRxAllowedAmt, StructField(totalRxPaid,DoubleType,true),
StructField(totalRxAllowedAmt,DoubleType,true))
:- isnull(input[1, struct<totalRxPaid:double,totalRxAllowedAmt:double>,
true])
: +- input[1, struct<totalRxPaid:double,totalRxAllowedAmt:double>, true]
:- null
+- createexternalrow(if (input[1,
struct<totalRxPaid:double,totalRxAllowedAmt:double>, true].isNullAt) null else
input[1, struct<totalRxPaid:double,totalRxAllowedAmt:double>,
true].totalRxPaid, if (input[1,
struct<totalRxPaid:double,totalRxAllowedAmt:double>, true].isNullAt) null else
input[1, struct<totalRxPaid:double,totalRxAllowedAmt:double>,
true].totalRxAllowedAmt, StructField(totalRxPaid,DoubleType,true),
StructField(totalRxAllowedAmt,DoubleType,true))
:- if (input[1, struct<totalRxPaid:double,totalRxAllowedAmt:double>,
true].isNullAt) null else input[1,
struct<totalRxPaid:double,totalRxAllowedAmt:double>, true].totalRxPaid
: :- input[1, struct<totalRxPaid:double,totalRxAllowedAmt:double>,
true].isNullAt
: : :- input[1, struct<totalRxPaid:double,totalRxAllowedAmt:double>,
true]
: : +- 0
: :- null
: +- input[1, struct<totalRxPaid:double,totalRxAllowedAmt:double>,
true].totalRxPaid
: +- input[1, struct<totalRxPaid:double,totalRxAllowedAmt:double>,
true]
+- if (input[1, struct<totalRxPaid:double,totalRxAllowedAmt:double>,
true].isNullAt) null else input[1,
struct<totalRxPaid:double,totalRxAllowedAmt:double>, true].totalRxAllowedAmt
:- input[1, struct<totalRxPaid:double,totalRxAllowedAmt:double>,
true].isNullAt
: :- input[1, struct<totalRxPaid:double,totalRxAllowedAmt:double>,
true]
: +- 1
:- null
+- input[1, struct<totalRxPaid:double,totalRxAllowedAmt:double>,
true].totalRxAllowedAmt
+- input[1, struct<totalRxPaid:double,totalRxAllowedAmt:double>,
true]
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]