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() } }
相关推荐
本篇文章将深入探讨如何将Spring Boot与Spark进行整合,以及通过Spark API实现数据处理。 首先,我们来理解一下Spring Boot。它是Spring框架的一个简化版本,旨在简化Java应用程序的初始设置和配置。通过内置的...
在本研讨会中,练习集中于使用和 API,以及数据处理中的 。 我的github帐户(此处为scala)中的和Scala均提供了练习。 您只需要克隆项目就可以了! 如果需要帮助,请查看解决方案分支。 原始博客文章就。 为了帮助...
API,以及数据处理。 练习在 Java 和我的 github 帐户中都可用(这里是 java)。 你只需要克隆项目就可以了! 如果您需要帮助,请查看解决方案分支。 原来的博文是对的。 为了帮助您实现每个类,单元测试在。 使用的...
2. **DataFrame**:在Spark SQL中引入的数据结构,基于RDD但提供了更高级别的抽象,支持SQL查询和DataFrame API。 3. **Dataset**:DataFrame的类型安全版本,提供了强类型的支持,适用于Java和Scala。 4. **...
4. **Spark SQL**:使用DataFrame API进行SQL查询,或者注册DataFrame为临时视图,然后通过SQL语句进行查询。 5. **广播变量**:使用广播变量来高效地分发大变量到所有工作节点,减少网络传输。 6. **累加器**:在...
此外,Spark支持DataFrame和Dataset,它们提供了更高级别的抽象,简化了数据处理。 5. **项目结构** "pres-spark-demo-master"这个文件夹名表明它是项目的主分支或主版本。通常,这个目录下会包含配置文件、源代码...
DataFrame是Spark SQL引入的,它提供了更高级别的抽象,支持SQL查询和跨语言API。Dataset进一步将DataFrame与强类型绑定,提供类型安全和编译时检查,同时保持DataFrame的性能优势。 4. **数据加载与持久化** ...
5. **Spark集成**:学习如何在Jupyter Notebook中连接Spark,创建SparkSession,以及如何使用DataFrame API进行数据处理。 【Spark核心组件及应用】 1. **SparkContext**:它是Spark程序的入口点,负责连接到集群...
3. Spark SQL和DataFrame:介绍如何使用Spark SQL进行结构化数据处理,DataFrame API的使用和好处。 4. Spark生态系统:探讨Spark的生态系统组件,如Spark Streaming、MLlib(机器学习库)和GraphX(图计算)。 5. ...
八、Spark SQL与DataFrame API 1. 数据查询:使用DataFrame API,可以编写类似SQL的查询语句,方便数据处理。 2. Hive集成:Spark SQL可以直接读写Hive表,兼容Hive的元数据和UDF。 九、Spark Streaming 1. DStream...
Spark SQL是Spark的一个模块,它允许开发人员使用SQL语言或者DataFrame/Dataset API来处理数据。文档可能会讲述如何将结构化数据源连接到Spark,如Hive、Parquet或JSON文件,以及如何创建DataFrame并执行SQL查询。...
3. **DataFrame和Spark SQL**:DataFrame提供了更高级别的抽象,简化了数据操作,而Spark SQL允许与SQL查询语言交互,便于数据分析。 4. **Spark Streaming**:探索实时数据处理,学习DStream(离散化流)的概念,...
4. **DataFrame和Spark SQL**:学习DataFrame的使用,它是Spark 2.0引入的高级API,以及如何使用Spark SQL进行结构化数据处理。 5. **Spark Streaming**:学习如何处理实时数据流,理解DStream和窗口操作。 6. **...
2. **Spark SQL与DataFrame/Dataset API**:介绍如何使用Spark SQL进行结构化数据处理,DataFrame和Dataset API的优势,以及如何与其他数据源(如HDFS、Hive、Cassandra等)集成。 3. **Spark Streaming**:讲解...
DataFrame是Spark SQL中的结构化数据处理模型,而DataSet结合了RDD的性能和DataFrame的结构化特性,提供了类型安全的API。教程可能还会涵盖如何读取和写入数据,以及如何使用SparkSQL进行查询。 在Spark 1.4中,...
- **DataFrame/Dataset API**:在Scala、Java、Python和R中提供了高阶API,简化了数据操作。 - **Transformation和Action**:Transformation定义数据转换,Action触发计算。 4. **Spark运行模式** - **Local模式...
通过这个压缩包中的练习代码,你将有机会深入学习如何创建SparkContext,定义和操作RDD,使用DataFrame API进行数据处理,构建Spark Streaming应用程序,以及利用MLlib进行机器学习。每一个练习都将带你更近一步地...
可以使用Spark的DataFrame API和SQL查询来简化处理过程。此外,为了提高效率,还可以考虑使用Spark的分区策略和广播变量等优化手段。 总之,这个项目是一个很好的实践,可以帮助我们掌握Spark的数据处理能力,包括...
7. **Spark SQL**:学习如何注册DataFrame为临时表,然后通过SQL语句进行查询,以及使用DataFrame API执行复杂的SQL操作。 8. **Spark Streaming**:如果包内涉及,会介绍如何使用PySpark进行实时数据流处理,创建...
- 数据分析:Spark SQL和DataFrame API适合对大量结构化数据进行快速查询和分析。 - 实时流处理:Spark Streaming可以处理来自Kafka、Flume等源的实时数据流。 - 机器学习:MLlib支持构建和训练大规模机器学习...