[jira] [Commented] (SPARK-30989) TABLE.COLUMN reference doesn't work with new columns created by UDF
[ https://issues.apache.org/jira/browse/SPARK-30989?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17063779#comment-17063779 ] L. C. Hsieh commented on SPARK-30989: - The analyzed query plan of {{df2}}: {code} == Analyzed Logical Plan == x: int, y: int, z: int Project [x#8, y#9, UDF(y#9) AS z#12] +- SubqueryAlias cat +- Project [_1#3 AS x#8, _2#4 AS y#9] +- SerializeFromObject [knownnotnull(assertnotnull(input[0, scala.Tuple2, true]))._1 AS _1#3, knownnotnull(assertnotnull(input[0, scala.Tuple2, true]))._2 AS _2#4] +- ExternalRDD [obj#2] {code} It is obviously that {{x}} and {{y}} are defined below {{SubqueryAlias cat}}. The UDF column {{z}} was added after you alias the dataframe, so it cannot be referred as {{cat.z}}. Doesn't it make sense? > TABLE.COLUMN reference doesn't work with new columns created by UDF > --- > > Key: SPARK-30989 > URL: https://issues.apache.org/jira/browse/SPARK-30989 > Project: Spark > Issue Type: Bug > Components: SQL >Affects Versions: 2.4.4 >Reporter: Chris Suchanek >Priority: Major > > When a dataframe is created with an alias (`.as("...")`) its columns can be > referred as `TABLE.COLUMN` but it doesn't work for newly created columns with > UDF. > {code:java} > // code placeholder > df1 = sc.parallelize(l).toDF("x","y").as("cat") > val squared = udf((s: Int) => s * s) > val df2 = df1.withColumn("z", squared(col("y"))) > df2.columns //Array[String] = Array(x, y, z) > df2.select("cat.x") // works > df2.select("cat.z") // Doesn't work > // org.apache.spark.sql.AnalysisException: cannot resolve '`cat.z`' given > input > // columns: [cat.x, cat.y, z];; > {code} > Might be related to: https://issues.apache.org/jira/browse/SPARK-30532 -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org For additional commands, e-mail: issues-h...@spark.apache.org
[jira] [Commented] (SPARK-30989) TABLE.COLUMN reference doesn't work with new columns created by UDF
[ https://issues.apache.org/jira/browse/SPARK-30989?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17062355#comment-17062355 ] Wenchen Fan commented on SPARK-30989: - https://github.com/apache/spark/pull/27916 can't fix it? I don't have a strong opnion as there is no clear rule about how we retain the df alias after many transformations. > TABLE.COLUMN reference doesn't work with new columns created by UDF > --- > > Key: SPARK-30989 > URL: https://issues.apache.org/jira/browse/SPARK-30989 > Project: Spark > Issue Type: Bug > Components: SQL >Affects Versions: 2.4.4 >Reporter: Chris Suchanek >Priority: Major > > When a dataframe is created with an alias (`.as("...")`) its columns can be > referred as `TABLE.COLUMN` but it doesn't work for newly created columns with > UDF. > {code:java} > // code placeholder > df1 = sc.parallelize(l).toDF("x","y").as("cat") > val squared = udf((s: Int) => s * s) > val df2 = df1.withColumn("z", squared(col("y"))) > df2.columns //Array[String] = Array(x, y, z) > df2.select("cat.x") // works > df2.select("cat.z") // Doesn't work > // org.apache.spark.sql.AnalysisException: cannot resolve '`cat.z`' given > input > // columns: [cat.x, cat.y, z];; > {code} > Might be related to: https://issues.apache.org/jira/browse/SPARK-30532 -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org For additional commands, e-mail: issues-h...@spark.apache.org
[jira] [Commented] (SPARK-30989) TABLE.COLUMN reference doesn't work with new columns created by UDF
[ https://issues.apache.org/jira/browse/SPARK-30989?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17062332#comment-17062332 ] hemanth meka commented on SPARK-30989: -- [~cloud_fan] or [~viirya], can you confirm if this needs a fix? I can work on this if needed. > TABLE.COLUMN reference doesn't work with new columns created by UDF > --- > > Key: SPARK-30989 > URL: https://issues.apache.org/jira/browse/SPARK-30989 > Project: Spark > Issue Type: Bug > Components: SQL >Affects Versions: 2.4.4 >Reporter: Chris Suchanek >Priority: Major > > When a dataframe is created with an alias (`.as("...")`) its columns can be > referred as `TABLE.COLUMN` but it doesn't work for newly created columns with > UDF. > {code:java} > // code placeholder > df1 = sc.parallelize(l).toDF("x","y").as("cat") > val squared = udf((s: Int) => s * s) > val df2 = df1.withColumn("z", squared(col("y"))) > df2.columns //Array[String] = Array(x, y, z) > df2.select("cat.x") // works > df2.select("cat.z") // Doesn't work > // org.apache.spark.sql.AnalysisException: cannot resolve '`cat.z`' given > input > // columns: [cat.x, cat.y, z];; > {code} > Might be related to: https://issues.apache.org/jira/browse/SPARK-30532 -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org For additional commands, e-mail: issues-h...@spark.apache.org
[jira] [Commented] (SPARK-30989) TABLE.COLUMN reference doesn't work with new columns created by UDF
[ https://issues.apache.org/jira/browse/SPARK-30989?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17057255#comment-17057255 ] hemanth meka commented on SPARK-30989: -- The alias "cat" is defined as a dataframe having 2 columns "x" and "y". The column "z" is generated from "cat" into a new dataframe "df2" but below code works and hence this exception looks like it should be the expected behaviour. is it not? df2.select("z") > TABLE.COLUMN reference doesn't work with new columns created by UDF > --- > > Key: SPARK-30989 > URL: https://issues.apache.org/jira/browse/SPARK-30989 > Project: Spark > Issue Type: Bug > Components: SQL >Affects Versions: 2.4.4 >Reporter: Chris Suchanek >Priority: Major > > When a dataframe is created with an alias (`.as("...")`) its columns can be > referred as `TABLE.COLUMN` but it doesn't work for newly created columns with > UDF. > {code:java} > // code placeholder > df1 = sc.parallelize(l).toDF("x","y").as("cat") > val squared = udf((s: Int) => s * s) > val df2 = df1.withColumn("z", squared(col("y"))) > df2.columns //Array[String] = Array(x, y, z) > df2.select("cat.x") // works > df2.select("cat.z") // Doesn't work > // org.apache.spark.sql.AnalysisException: cannot resolve '`cat.z`' given > input > // columns: [cat.x, cat.y, z];; > {code} > Might be related to: https://issues.apache.org/jira/browse/SPARK-30532 -- This message was sent by Atlassian Jira (v8.3.4#803005) - To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org For additional commands, e-mail: issues-h...@spark.apache.org