Spark1.4.0-SparkSQL与Hive整合-支持窗口分析函数

http://lxw1234.com/archives/2015/06/294.htm

Spark1.4发布,除了重量级的SparkR,其中的SparkSQL支持了我期待已久的窗口分析函数(window functions),关于Hive中窗口分析函数的用法可参考 Hive分析函数系列 文章。
在我们的数据平台中,90%以上的离线分析任务都是使用Hive实现,其中必然会使用很多窗口分析函数,如果SparkSQL支持窗口分析函数,
那么对于后面Hive向SparkSQL中的迁移的工作量会大大降低,因此迫不及待将Spark1.4下载试用一下。

关于Spark1.4的安装配置,和1.3无异,安装配置步骤可参考 Spark1.3.1安装配置运行
这里将Spark1.4 SparkSQL与Hive的整合介绍一下,也非常容易,只需几步配置即可。
前提是你已经安装配置好Hadoop和Hive,并且可正常使用,Hive的安装配置可参考 [一起学Hive]之四-Hive的安装配置 。

我使用的环境:
Hadoop: hadoop-2.3.0-cdh5.0.0
Hive: apache-hive-0.13.1-bin
Spark: spark-1.4.0-bin-hadoop2.3

SparkSQL与Hive的整合

1. 拷贝$HIVE_HOME/conf/hive-site.xml和hive-log4j.properties到 $SPARK_HOME/conf/
2. 在$SPARK_HOME/conf/目录中,修改spark-env.sh,添加
export HIVE_HOME=/usr/local/apache-hive-0.13.1-bin
export SPARK_CLASSPATH=$HIVE_HOME/lib/mysql-connector-java-5.1.15-bin.jar:$SPARK_CLASSPATH
3. 另外也可以设置一下Spark的log4j配置文件,使得屏幕中不打印额外的INFO信息:
log4j.rootCategory=WARN, console

好了,SparkSQL与Hive的整合就这么简单,配置完后,重启Spark slave和master.

进入$SPARK_HOME/bin
执行 ./spark-sql –name “lxw1234″ –master spark://127.0.0.1:7077 进入spark-sql:

 

 
 
  1. spark-sql> show databases;
  2. OK
  3. default
  4. lxw1234
  5. usergroup_mdmp
  6. userservice_mdmp
  7. ut
  8. Time taken: 0.093 seconds, Fetched 5 row(s)
  9. spark-sql> use lxw1234;
  10. OK
  11. Time taken: 0.074 seconds
  12. spark-sql> select * from t_lxw1234;
  13. 2015-05-10 url1
  14. 2015-05-10 url2
  15. 2015-06-14 url1
  16. 2015-06-14 url2
  17. 2015-06-15 url1
  18. 2015-06-15 url2
  19. Time taken: 0.33 seconds, Fetched 6 row(s)
  20. spark-sql> desc t_lxw1234;
  21. day string NULL
  22. url string NULL
  23. Time taken: 0.113 seconds, Fetched 2 row(s)
  24. //ROW_NUMBER()
  25. spark-sql> select url,day,row_number() over(partition by url order by day) as rn from t_lxw1234;
  26. url1 2015-05-10 1
  27. url1 2015-06-14 2
  28. url1 2015-06-15 3
  29. url2 2015-05-10 1
  30. url2 2015-06-14 2
  31. url2 2015-06-15 3
  32. Time taken: 1.114 seconds, Fetched 6 row(s)
  33. //COUNT()
  34. spark-sql> select url,day,count(1) over(partition by url order by day) as rn from t_lxw1234;
  35. url1 2015-05-10 1
  36. url1 2015-06-14 2
  37. url1 2015-06-15 3
  38. url2 2015-05-10 1
  39. url2 2015-06-14 2
  40. url2 2015-06-15 3
  41. Time taken: 0.934 seconds, Fetched 6 row(s)
  42. //LAG()
  43. spark-sql> select url,day,lag(day) over(partition by url order by day) as rn from t_lxw1234;
  44. url1 2015-05-10 NULL
  45. url1 2015-06-14 2015-05-10
  46. url1 2015-06-15 2015-06-14
  47. url2 2015-05-10 NULL
  48. url2 2015-06-14 2015-05-10
  49. url2 2015-06-15 2015-06-14
  50. Time taken: 0.897 seconds, Fetched 6 row(s)
  51. spark-sql>

没问题,果然都支持了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值