sparkSQL错误的结果

时间:2016-02-17 08:05:42

标签: apache-spark hive apache-spark-sql

我的spark版本是1.5.0,我在spark-shell中使用spark-SQL做一些ETL,这是我的代码:

import com.databricks.spark.avro._
import org.apache.spark.sql.hive.HiveContext
val sqlContext = new HiveContext(sc)
import sqlContext.implicits._
import java.security.MessageDigest

val dfGoods = sqlContext.read.avro("hdfs:///user/data/date=*")
dfGoods.registerTempTable("goodsinfo")

val dfGoodsLmt=sqlContext.sql("SELECT * FROM (SELECT goodsid, etype, goodsattribute, row_number() over (partition by goodsid order by runid DESC) rank_num FROM goodsinfo) tmp WHERE rank_num =1")

我使用dfGoodsLmt.count()查看行号,第一次结果总是错误的,但在那之后,我重新运行代码dfGoodsLmt.count(),结果是对的。我已经多次尝试过,我不知道为什么。

这是一个演示代码,结果应该是1000,但我需要尝试不止一次才能得到正确的答案。 case class data(id:Int,name:Int) val tmp=(1 to 1000) zip (1 to 1000) tmp.map(x=>data(x._1,x._2)).toDF.registerTempTable("test_table") sqlContext.sql("select * from (select *,row_number() over(partition by id order by id DESC)rank from test_table)tmp where rank=1").count

0 个答案:

没有答案