分享

sparkSQL 错误输出

cp87597 发表于 2016-2-18 10:35:25 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 3 7783
我使用的是spark1.5.0,下面是我的代码,输出应该就是1000,但是经常输出错误,请教下这是BUG么?

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


已有(3)人评论

跳转到指定楼层
easthome001 发表于 2016-2-18 11:28:38
这肯定不是bug的。计算机是我们的老师。只要善用,一切问题都可以自己解决。

交给楼主一个办法,适用于很多情况
sqlContext.sql("select * from (select *,row_number() over(partition by id order by id DESC)rank from test_table)tmp where rank=1").count


下面sql其实很复杂。那么我们可以对他们进行拆分
首先下面应该是比较好判断的,只要懂sql就没有问题的。
sqlContext.sql(" select *  from test_table ").count


然后在演变
sqlContext.sql(" select * ,row_number() over(partition by id order by id DESC)rank from test_table ").count

推测结果

然后在演变。
最后找到问题的原因


回复

使用道具 举报

cp87597 发表于 2016-2-18 12:17:30
easthome001 发表于 2016-2-18 11:28
这肯定不是bug的。计算机是我们的老师。只要善用,一切问题都可以自己解决。

交给楼主一个办法,适用于 ...

你好,多谢回答。其实我之前拆分过,我知道错误在于"Where"语句,但是我不知道为什么会出错啊
回复

使用道具 举报

easthome001 发表于 2016-2-18 12:38:28
cp87597 发表于 2016-2-18 12:17
你好,多谢回答。其实我之前拆分过,我知道错误在于"Where"语句,但是我不知道为什么会出错啊

你的数据是什么?
where之前是什么
where之后是什么
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条