Spark sql on Hive非常方便,通过共享读取hive的元数据,我们可以直接使用spark sql访问hive的库和表,做更快的OLAP的分析。
spark 如果想直接能集成sql,最好自己编译下源码:
切换scala的版本为新版本
dev/change-scala-version.sh 2.11
编译支持hive
mvn -Pyarn -Phive -Phive-thriftserver -Phadoop-2.7.3 -Dscala-2.11 -DskipTests clean package
注意,spark sql 可以直接在Linux上使用,像执行hive命令一样,进入交互式终端,进行即席查询,进入spark-sql交互式终端命令,并指定以yarn的模式运行:
spark/bin/spark-sql --master yarn
本次使用的spark2.0.2,进入交互式终端之后,可以进行任意的查询分析,但本文的笔记例子,不是基于终端的spark sql分析,而是在Scala中使用spark sql on hive,在编程语言里面使用spark sql on hive 灵活性大大提供,能做更多的事情,比如说分析完的结果存储到MySQL,Hbase或者Redis里面,或者分析的过程,需要外部存储的一些数据等等。
开发程序是在IDEA里面写的,项目风格是Java+scala混搭采用maven管理,注意不是全scala项目,没有用sbt管理,sbt的国内下载非常慢,能翻网的同学可以尝试一下。
功能: 使用spark sql读取hive的数据,然后根据某个字段分组,并收集分组结果,然后存储到redis里面。
def main(args: Array[String]): Unit = {
val t0=System.nanoTime();//开始时间
val spark=SparkSession
.builder()
.appName("spark on sql hive ")
.enableHiveSupport().getOrCreate();//激活hive支持
import spark.implicits._
import spark.sql
sql(" use db")//切换db
//注意,collect_set 可以收集分组结果
val ds=sql("select q_id, collect_set(kp_id) as ids from ods_q_quest_kp_rel where kp_id!=0 group by q_id");
ds.cache();//cache起来,便于后续使用
println("size:",ds.collect().length)//打印长度
ds.select("q_id","ids").collect().foreach (
t =>
{
val key=t.getAs[String]("q_id");//获取上面的列映射
val value=t.getAs[Seq[String]]("ids").mkString(",");//获取上面的分组集合
//insert redis
}
)
val t1=System.nanoTime();
println("insert redis ok! Elapsed time: " + (t1 - t0)/1000/1000 + "ms")
//停止
spark.stop();
}
有什么问题可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。
技术债不能欠,健康债更不能欠, 求道之路,与君同行。
分享到:
相关推荐
What's more, Big Data Analytics with Spark provides an introduction to other big data technologies that are commonly used along with Spark, like Hive, Avro, Kafka and so on. So the book is self-...
Spark SQL增加了DataFrame(即带有Schema信息的RDD),使用户可以在Spark SQL中执行SQL语句,数据既可以来自RDD,也可以是Hive、HDFS、Cassandra等外部数据源,还可以是JSON格式的数据 Spark SQL目前支持Scala、...
方法一:普通方法,不设置分组/分区2. 方法二:设置分组和过滤器3. 方法三:自定义分区器3.根据IP计算归属地 1.WordCount Spark Core入门案例。 //创建spark配置,设置应用程序名字 //val conf=new SparkConf()....
此应用程序(CSJB)是Spark应用程序,它将在Spark SQL中自动将所有Cassandra表注册为架构RDD,并启动嵌入式Apache HiveThriftServer,以使这些RDD准备通过“ jdbc:hive2”协议使用。 使用此网桥/服务器,您可以...
您随时可以在GitHub上找到最新版本https://github.com/dimajix/spark-training内容存储库包含不同类型的文档Spark / Scala的源代码适用于PySpark的Jupyter笔记本Zeppelin笔记本用于Spark / Scala Hive SQL脚本猪...
SQL相关官方文档笔记,见SparkSQLDoc.md Spark Streaming 相关, 见SparkStreaming.md 奇淫巧技 IDEA,按住ALT,并按住左键进行框选也能实现多行编辑 Linux的vi编辑。 使用A进入输入模式,再进行复制。如果使用a进入...
SparkSQL:提供通过ApacheHive的SQL变体Hive查询语言(HiveQL)与Spark进行交互的API。每个数据库表被当做一个RDD,SparkSQL查询被转换为Spark操作。对熟悉Hive和HiveQL的人,Spark可以拿来就用。SparkStrea
Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作用。 与HiveSql的区别:Hive SQL是通过转换成MapReduce任务,然后提交到集群上执行,简化了编写...
PySpark电商分析案例讲解,Python+Spark,Python+Spark SQL,Python+SparkStream,Python+Hive等视频讲解,含讲义、代码、笔记、软件等,原价值千元内部培训教程现免费对外公开。
hive基本是大数据入门必学的,在离线计算用的比较多,市场需求大,有sql基础入门比较快 Scala 导图笔记 练手项目 scala 工作中flink/spark代码一般都是使用 Scala 实现 优先学! Spark 阅读官方文档 导图笔记 练手项目 ...
0-读论文(7篇) 文章编号 文章译文 链接 0 【读论文】先知 1个 【论文笔记】在神经网络中... 【spark】sql.functions详解 159 【火花】工程实践 162 【Hive SQL】速查。 173 【火花】模型持久化 173 打包Python
大数据实践系列课程中的入门部分。大数据系列课程涉及Hadoop、Hbase、Hive、Spark、Spark SQL、Python数据分析等内容,将会为朋友们详细的做讲解,讲解的视频配有齐全的资料(源码、课程笔记)。
大数据培训资料库设定表hdfs dfs -mkdir -p /tmp/hivedemo/cd big_data_traininghdfs dfs -put -f data /tmp/hivedemo/beeline -u "jdbc:hive2://localhost:10000" -f data/setup_tables.sql练习题 : /蜂巢SQL :...