title: Spark sql throws UTF8 String Casting Error
body: <p>It seems like  Spark sql Window function does not working properly .
  I am running a spark job in Hadoop Cluster where a HDFS block size is 128 MB and 
  Spark Version 1.5 CDH 5.5 </p>
  
  <p>I am reading a avro file and doing the below operation </p>
  
  <p><strong>My requirement:</strong></p>
  
  <p><strong>If there are multiple records with same data_rfe_id then take the single record as per maximum seq_id and maxiumum service_id</strong></p>
  
  <p>I see that in raw data there  are some records with same data_rfe_id and same seq_id so hence, I applied row_number using Window function so that I can filter the records with row_num === 1</p>
  
  <p>I want to use Window Function only to achieve this .</p>
  
  <p>Why is it happening like this? </p>
  
  <p>Do I need to reshuffle before I apply window function on dataframe? </p>
  
  <p>It throws the below exception for some tasks alone and the job failed after 4 repeated failed tasks ? </p>
  
  <p>When do we get these kind of exception . </p>
  
  <pre><code> import org.apache.spark.sql.expressions.Window
   import org.apache.spark.sql.functions.rowNumber
   .....
  
  scala&gt; df.printSchema
  root
   |-- transitional_key: string (nullable = true)
   |-- seq_id: string (nullable = true)
   |-- data_rfe_id: string (nullable = true)
   |-- service_id: string (nullable = true)
   |-- event_start_date_time: string (nullable = true)
   |-- event_id: string (nullable = true)
  
  
   val windowFunction = Window.partitionBy(df("data_rfe_id")).orderBy(df("seq_id").desc)
    val rankDF =df.withColumn("row_num",rowNumber.over(windowFunction))
    rankDF.select("data_rfe_id","seq_id","service_id","row_num").show(200,false)
  </code></pre>
  
  <p>In my code i am not doing any casting . Just reading everything as string </p>
  
  <p>I am getting the correct results when i run the above code in Spark-shell. </p>
  
  <p>But if i try to run the same code from spark-submit command by supplying the jar it throws the below exception </p>
  
  <pre><code>  Caused by: java.lang.ClassCastException:  org.apache.spark.unsafe.types.UTF8String cannot be cast to java.lang.Integer
  at scala.runtime.BoxesRunTime.unboxToInt(BoxesRunTime.java:106)
  at org.apache.spark.sql.catalyst.expressions.BaseGenericInternalRow$class.getInt(rows.scala:40)
  at org.apache.spark.sql.catalyst.expressions.GenericInternalRow.getInt(rows.scala:220)
  at org.apache.spark.sql.catalyst.expressions.JoinedRow.getInt(JoinedRow.scala:82)
  at org.apache.spark.sql.catalyst.expressions.BoundReference.eval(BoundAttribute.scala:45)
  at org.apache.spark.sql.catalyst.expressions.Alias.eval(namedExpressions.scala:121)
  at org.apache.spark.sql.catalyst.expressions.InterpretedMutableProjection.apply(Projection.scala:82)
  at org.apache.spark.sql.catalyst.expressions.InterpretedMutableProjection.apply(Projection.scala:61)
  at org.apache.spark.sql.execution.Window$$anonfun$8$$anon$1.next(Window.scala:330)
  at org.apache.spark.sql.execution.Window$$anonfun$8$$anon$1.next(Window.scala:252)
  at scala.collection.Iterator$$anon$14.hasNext(Iterator.scala:389)
  at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:327)
  at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:327)
  at scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:308)
  at scala.collection.Iterator$class.foreach(Iterator.scala:727)
  at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
  at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
  at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103)
  at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47)
  at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273)
  at scala.collection.AbstractIterator.to(Iterator.scala:1157)
  at scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265)
  at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157)
  at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252)
  at scala.collection.AbstractIterator.toArray(Iterator.scala:1157)
  at org.apache.spark.sql.execution.SparkPlan$$anonfun$5.apply(SparkPlan.scala:215)
  at org.apache.spark.sql.execution.SparkPlan$$anonfun$5.apply(SparkPlan.scala:215)
  at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1850)
  at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1850)
  at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:66)
  at org.apache.spark.scheduler.Task.run(Task.scala:88)
  at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:214)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
  at java.lang.Thread.run(Thread.java:745)
  </code></pre>
  
  <p>Could someone explain me why I am getting the above error ? and How do I resolve that ?</p>