微信搜索lxw1234bigdata | 邀请体验:数阅–数据管理、OLAP分析与可视化平台 | 赞助作者:赞助作者

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

Hive lxw1234@qq.com 34987℃ 4评论

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:

 

	
spark-sql> show databases;
OK
default
lxw1234
usergroup_mdmp
userservice_mdmp
ut
Time taken: 0.093 seconds, Fetched 5 row(s)
spark-sql> use lxw1234;
OK
Time taken: 0.074 seconds
spark-sql> select * from t_lxw1234;
2015-05-10      url1
2015-05-10      url2
2015-06-14      url1
2015-06-14      url2
2015-06-15      url1
2015-06-15      url2
Time taken: 0.33 seconds, Fetched 6 row(s)
spark-sql> desc t_lxw1234;
day     string  NULL
url     string  NULL
Time taken: 0.113 seconds, Fetched 2 row(s)
//ROW_NUMBER()
spark-sql> select url,day,row_number() over(partition by url order by day) as rn from t_lxw1234; 
url1    2015-05-10      1
url1    2015-06-14      2
url1    2015-06-15      3
url2    2015-05-10      1
url2    2015-06-14      2
url2    2015-06-15      3
Time taken: 1.114 seconds, Fetched 6 row(s)
//COUNT()
spark-sql> select url,day,count(1) over(partition by url order by day) as rn from t_lxw1234;
url1    2015-05-10      1                                                       
url1    2015-06-14      2
url1    2015-06-15      3
url2    2015-05-10      1
url2    2015-06-14      2
url2    2015-06-15      3
Time taken: 0.934 seconds, Fetched 6 row(s)
//LAG()
spark-sql> select url,day,lag(day) over(partition by url order by day) as rn from t_lxw1234;
url1    2015-05-10      NULL
url1    2015-06-14      2015-05-10
url1    2015-06-15      2015-06-14
url2    2015-05-10      NULL
url2    2015-06-14      2015-05-10
url2    2015-06-15      2015-06-14
Time taken: 0.897 seconds, Fetched 6 row(s)
spark-sql> 

没问题,果然都支持了。

相关文章:

Hive分析函数系列
Spark1.3.1安装配置运行
[一起学Hive]之四-Hive的安装配置

更多关于大数据Hadoop、Spark、Hive的文章,可以阅读 我的博客

 

如果觉得本博客对您有帮助,请 赞助作者

转载请注明:lxw的大数据田地 » Spark1.4.0-SparkSQL与Hive整合-支持窗口分析函数

喜欢 (15)
分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(4)个小伙伴在吐槽
  1. 请教楼主,您的$SPARK_HOME和$HIVE_HOME的值是多少?CDH下是多少?上面的操作是对集群里所有的机器都操作一遍吗? 这是我的联系方式,望交流。http://www.cnblogs.com/wgp13x/
    aitanjupt2015-12-15 15:07 回复
    • $SPARK_HOME和$HIVE_HOME就是你的Spark和Hive安装目录啊,比如:/usr/local/spark/ 另外,现在我都是采用Spark On Yarn的模式来运行spark-shell和spark-sql,包括与Hive的整合。 不单独部署Spark集群。
      lxw1234@qq.com2015-12-16 08:27 回复
  2. 执行 ./spark-sql –name “lxw1234″ –master spark://127.0.0.1:7077 这句执行不了啊
    天意19872016-01-14 16:49 回复
  3. 你好,请问你一个问题.设置完log4j.propertites把日志级别更改为WARN之后,查询的的time taken不显示了,请问你是怎么设置让spark-sql显示time taken的呢?
    过河卒子Rover2017-01-19 17:43 回复