`
qindongliang1922
  • 浏览: 2147531 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:116328
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:124593
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:58457
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:70354
社区版块
存档分类
最新评论

spark sql on hive笔记一

阅读更多
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),在后台留言咨询。
技术债不能欠,健康债更不能欠, 求道之路,与君同行。

0
0
分享到:
评论

相关推荐

    Big.Data.Analytics.with.Spark

    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学习笔记(三):Spark DataFrame

    Spark SQL增加了DataFrame(即带有Schema信息的RDD),使用户可以在Spark SQL中执行SQL语句,数据既可以来自RDD,也可以是Hive、HDFS、Cassandra等外部数据源,还可以是JSON格式的数据 Spark SQL目前支持Scala、...

    Spark Core 笔记02

    方法一:普通方法,不设置分组/分区2. 方法二:设置分组和过滤器3. 方法三:自定义分区器3.根据IP计算归属地 1.WordCount Spark Core入门案例。 //创建spark配置,设置应用程序名字 //val conf=new SparkConf()....

    cassandra-spark-jdbc-bridge:如果要通过JDBC查询Cassandra数据,但想使用Spark SQL的强大功能进行数据处理,则需要此应用程序

    此应用程序(CSJB)是Spark应用程序,它将在Spark SQL中自动将所有Cassandra表注册为架构RDD,并启动嵌入式Apache HiveThriftServer,以使这些RDD准备通过“ jdbc:hive2”协议使用。 使用此网桥/服务器,您可以...

    spark-training:用于Spark培训的存储库

    您随时可以在GitHub上找到最新版本https://github.com/dimajix/spark-training内容存储库包含不同类型的文档Spark / Scala的源代码适用于PySpark的Jupyter笔记本Zeppelin笔记本用于Spark / Scala Hive SQL脚本猪...

    java8集合源码分析-spark-sql:spark学习

    SQL相关官方文档笔记,见SparkSQLDoc.md Spark Streaming 相关, 见SparkStreaming.md 奇淫巧技 IDEA,按住ALT,并按住左键进行框选也能实现多行编辑 Linux的vi编辑。 使用A进入输入模式,再进行复制。如果使用a进入...

    Python学习笔记——大数据之Spark简介与环境搭建

    SparkSQL:提供通过ApacheHive的SQL变体Hive查询语言(HiveQL)与Spark进行交互的API。每个数据库表被当做一个RDD,SparkSQL查询被转换为Spark操作。对熟悉Hive和HiveQL的人,Spark可以拿来就用。SparkStrea

    SparkSQL 笔记 01

    Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作用。 与HiveSql的区别:Hive SQL是通过转换成MapReduce任务,然后提交到集群上执行,简化了编写...

    PySpark大数据分析项目实战(完整视频+课件+代码+软件工具)

    PySpark电商分析案例讲解,Python+Spark,Python+Spark SQL,Python+SparkStream,Python+Hive等视频讲解,含讲义、代码、笔记、软件等,原价值千元内部培训教程现免费对外公开。

    hadoop_study:定期更新Hadoop生态圈中常用大数据组件文档 重心依次为

    hive基本是大数据入门必学的,在离线计算用的比较多,市场需求大,有sql基础入门比较快 Scala 导图笔记 练手项目 scala 工作中flink/spark代码一般都是使用 Scala 实现 优先学! Spark 阅读官方文档 导图笔记 练手项目 ...

    guofei9987.github.io:我的博客

    0-读论文(7篇) 文章编号 文章译文 链接 0 【读论文】先知 1个 【论文笔记】在神经网络中... 【spark】sql.functions详解 159 【火花】工程实践 162 【Hive SQL】速查。 173 【火花】模型持久化 173 打包Python

    【Hadoop基础-单机部署】

    大数据实践系列课程中的入门部分。大数据系列课程涉及Hadoop、Hbase、Hive、Spark、Spark SQL、Python数据分析等内容,将会为朋友们详细的做讲解,讲解的视频配有齐全的资料(源码、课程笔记)。

    big_data_training

    大数据培训资料库设定表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 :...

Global site tag (gtag.js) - Google Analytics