`
功夫小当家
  • 浏览: 186407 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spark - DataFrame Api 练习

阅读更多

DataFrame Api 练习(需要了解下functions.scala源码)

 

package df

import org.apache.spark.sql.SparkSession

object DataFrameDemo {

  def main(args: Array[String]): Unit = {
    val spark = SparkSession.builder().appName("DF_DEMO").master("local").getOrCreate()

    /**
      * 测试数据内容:
      * {"id":1,"name":"zhangsan"}
      * {"id":3,"name":"lisi"}
      * {"id":2,"name":"wangwu"}
      */

    val df = spark.read.json("file:///F:\\test\\1.json")
    //1.展示df的内容, show方法默认展示20行, 每列限制20个字符,超出就截断
    df.show()

    //2.打印schema
    df.printSchema()

    //3.查询id列 (如果id列不是schema里的列,会报错找不到列!!!)
    df.select("id").show()
    df.select(df("id")).show()

    //需要引入隐式转换
    import spark.implicits._
    df.select('id).show()
    df.select($"id").show()

    //4.group by (借助count转为DataFrame)
    df.groupBy("id").count().show()

    //5.使用sql的写法
    //createGlobalTempView会把表people_tbl建在global_temp数据库下
    df.createGlobalTempView("people_tbl")

    //查询时候要指定数据库global_temp, 否则会报错找不到表!!!
    //    spark.sql("select * from people_tbl").show()
    spark.sql("select * from global_temp.people_tbl").show()

    //global temp view在一个application的多个session中都可见!!!
    spark.newSession().sql("SELECT * FROM global_temp.people_tbl").show()

    //6.head从头取n个数据的Array
    df.head(2).foreach(println)

    //7.filter操作!!!
    /**
      * 输出结果:
      * +---+--------+
      * | id|    name|
      * +---+--------+
      * |  1|zhangsan|
      * |  3|    lisi|
      * +---+--------+
      */
    df.filter("name='lisi' or id=1").show()
    //name以w开头的
    df.filter("substr(name,0, 1)='w'").show()

    //8.sort默认是字典升序
    df.sort("name").show()
    //字典降序col.desc, 按照多列排序
    df.sort(df.col("name").desc, df.col("id").asc).show()

    //9.as别名
    /**
      * 输出结果:
      * +------+
      * |stu_id|
      * +------+
      * |     1|
      * |     3|
      * |     2|
      * +------+
      */
    df.select(df.col("id").as("stu_id")).show()

    //10.join操作(join 时候on的条件必须要使用 ===  连接 !!!),join()的第三个参数指定连接方式
    /**
      * 输出结果
      * +---+--------+---+--------+
      * | id|    name| id|    name|
      * +---+--------+---+--------+
      * |  1|zhangsan|  1|zhangsan|
      * |  3|    lisi|  3|    lisi|
      * |  2|  wangwu|  2|  wangwu|
      * +---+--------+---+--------+
      */
    df.join(df, df.col("id") === df.col("id"), "inner").show()

    //11.orderBy 底层调用的是sort()
    df.orderBy().show()
    df.sort().show()

    //12.limit和head的区别
    /**
      * head  :是一个action, 返回数组
      * limit :返回一个 Dataset.
      **/
    df.head(2).foreach(println)
    df.limit(2).show()
  }
}

  

 

分享到:
评论

相关推荐

    springboot与spark整合开发, 练习spark api

    本篇文章将深入探讨如何将Spring Boot与Spark进行整合,以及通过Spark API实现数据处理。 首先,我们来理解一下Spring Boot。它是Spring框架的一个简化版本,旨在简化Java应用程序的初始设置和配置。通过内置的...

    spark-in-practice-scala:Spark,Spark流,Spark SQL和DataFrame入门

    在本研讨会中,练习集中于使用和 API,以及数据处理中的 。 我的github帐户(此处为scala)中的和Scala均提供了练习。 您只需要克隆项目就可以了! 如果需要帮助,请查看解决方案分支。 原始博客文章就。 为了帮助...

    倒排索引源码java-spark-in-practice:Spark入门、SparkStreaming、SparkSQL、DataFrame

    API,以及数据处理。 练习在 Java 和我的 github 帐户中都可用(这里是 java)。 你只需要克隆项目就可以了! 如果您需要帮助,请查看解决方案分支。 原来的博文是对的。 为了帮助您实现每个类,单元测试在。 使用的...

    spark考试练习题含答案.rar

    2. **DataFrame**:在Spark SQL中引入的数据结构,基于RDD但提供了更高级别的抽象,支持SQL查询和DataFrame API。 3. **Dataset**:DataFrame的类型安全版本,提供了强类型的支持,适用于Java和Scala。 4. **...

    spark-lab:一系列小练习,尝试使用Spark功能

    4. **Spark SQL**:使用DataFrame API进行SQL查询,或者注册DataFrame为临时视图,然后通过SQL语句进行查询。 5. **广播变量**:使用广播变量来高效地分发大变量到所有工作节点,减少网络传输。 6. **累加器**:在...

    pres-spark-demo

    此外,Spark支持DataFrame和Dataset,它们提供了更高级别的抽象,简化了数据处理。 5. **项目结构** "pres-spark-demo-master"这个文件夹名表明它是项目的主分支或主版本。通常,这个目录下会包含配置文件、源代码...

    Spark 练习题-数据

    DataFrame是Spark SQL引入的,它提供了更高级别的抽象,支持SQL查询和跨语言API。Dataset进一步将DataFrame与强类型绑定,提供类型安全和编译时检查,同时保持DataFrame的性能优势。 4. **数据加载与持久化** ...

    The-Spark-Foundation--GRIP-April-21:GRIP 4月21日实习

    5. **Spark集成**:学习如何在Jupyter Notebook中连接Spark,创建SparkSession,以及如何使用DataFrame API进行数据处理。 【Spark核心组件及应用】 1. **SparkContext**:它是Spark程序的入口点,负责连接到集群...

    46488-Spark大数据技术与应用(1-3).pdf

    3. Spark SQL和DataFrame:介绍如何使用Spark SQL进行结构化数据处理,DataFrame API的使用和好处。 4. Spark生态系统:探讨Spark的生态系统组件,如Spark Streaming、MLlib(机器学习库)和GraphX(图计算)。 5. ...

    spark全案例

    八、Spark SQL与DataFrame API 1. 数据查询:使用DataFrame API,可以编写类似SQL的查询语句,方便数据处理。 2. Hive集成:Spark SQL可以直接读写Hive表,兼容Hive的元数据和UDF。 九、Spark Streaming 1. DStream...

    spark入门及实战文档

    Spark SQL是Spark的一个模块,它允许开发人员使用SQL语言或者DataFrame/Dataset API来处理数据。文档可能会讲述如何将结构化数据源连接到Spark,如Hive、Parquet或JSON文件,以及如何创建DataFrame并执行SQL查询。...

    scala-spark-tutorial:詹姆斯的Apache Spark项目与Scala课程

    3. **DataFrame和Spark SQL**:DataFrame提供了更高级别的抽象,简化了数据操作,而Spark SQL允许与SQL查询语言交互,便于数据分析。 4. **Spark Streaming**:探索实时数据处理,学习DStream(离散化流)的概念,...

    INTRO_SPARK-SCALA_FOR_STUDENTS

    4. **DataFrame和Spark SQL**:学习DataFrame的使用,它是Spark 2.0引入的高级API,以及如何使用Spark SQL进行结构化数据处理。 5. **Spark Streaming**:学习如何处理实时数据流,理解DStream和窗口操作。 6. **...

    Spark大数据分析与实战课后练习答案.rar

    2. **Spark SQL与DataFrame/Dataset API**:介绍如何使用Spark SQL进行结构化数据处理,DataFrame和Dataset API的优势,以及如何与其他数据源(如HDFS、Hive、Cassandra等)集成。 3. **Spark Streaming**:讲解...

    spark1.4的本地模式编程练习(2)附加代码

    DataFrame是Spark SQL中的结构化数据处理模型,而DataSet结合了RDD的性能和DataFrame的结构化特性,提供了类型安全的API。教程可能还会涵盖如何读取和写入数据,以及如何使用SparkSQL进行查询。 在Spark 1.4中,...

    spark期末考核--一班.zip

    - **DataFrame/Dataset API**:在Scala、Java、Python和R中提供了高阶API,简化了数据操作。 - **Transformation和Action**:Transformation定义数据转换,Action触发计算。 4. **Spark运行模式** - **Local模式...

    spark的scala练习代码(里面都有详细注解)

    通过这个压缩包中的练习代码,你将有机会深入学习如何创建SparkContext,定义和操作RDD,使用DataFrame API进行数据处理,构建Spark Streaming应用程序,以及利用MLlib进行机器学习。每一个练习都将带你更近一步地...

    spark练习数据(计算用户停留时间最长的两个小区)

    可以使用Spark的DataFrame API和SQL查询来简化处理过程。此外,为了提高效率,还可以考虑使用Spark的分区策略和广播变量等优化手段。 总之,这个项目是一个很好的实践,可以帮助我们掌握Spark的数据处理能力,包括...

    Spark编程基础(Python版).rar

    7. **Spark SQL**:学习如何注册DataFrame为临时表,然后通过SQL语句进行查询,以及使用DataFrame API执行复杂的SQL操作。 8. **Spark Streaming**:如果包内涉及,会介绍如何使用PySpark进行实时数据流处理,创建...

    Spark+快速入门共7页.pdf.zip

    - 数据分析:Spark SQL和DataFrame API适合对大量结构化数据进行快速查询和分析。 - 实时流处理:Spark Streaming可以处理来自Kafka、Flume等源的实时数据流。 - 机器学习:MLlib支持构建和训练大规模机器学习...

Global site tag (gtag.js) - Google Analytics