一、mysql作为数据源

  1. import org.apache.spark.sql.{DataFrame, Dataset, Row, SparkSession}
  2.  
  3. /**
  4. * mysql作为数据源
  5. *
  6. * schema信息
  7. * root
  8. * |-- uid: integer (nullable = false)
  9. * |-- xueyuan: string (nullable = true)
  10. * |-- number_one: string (nullable = true)
  11. */
  12. object JdbcSource {
  13. def main(args: Array[String]): Unit = {
  14. //1.sparkSQL 创建sparkSession
  15. val sparkSession: SparkSession = SparkSession.builder().appName("JdbcSource")
  16. .master("local[2]").getOrCreate()
  17.  
  18. //2.加载数据源
  19. val urlData: DataFrame = sparkSession.read.format("jdbc").options(Map(
  20. "url" -> "jdbc:mysql://localhost:3306/urlcount",
  21. "driver" -> "com.mysql.jdbc.Driver",
  22. "dbtable" -> "url_data",
  23. "user" -> "root",
  24. "password" -> "root"
  25. )).load()
  26.  
  27. //测试
  28. //urlData.printSchema()
  29. //urlData.show()
  30.  
  31. //3.过滤数据
  32. val fData: Dataset[Row] = urlData.filter(x => {
  33. //uid>2 如何拿到uid?
  34. x.getAs[Int](0) > 2
  35. })
  36.  
  37. fData.show()
  38. sparkSession.stop()
  39. }
  40. }

mysql数据:

二、Spark写出数据格式

  1. import org.apache.spark.sql.{DataFrame, Dataset, Row, SparkSession}
  2.  
  3. object JdbcSource1 {
  4. def main(args: Array[String]): Unit = {
  5. //1.sparkSQL 创建sparkSession
  6. val sparkSession: SparkSession = SparkSession.builder().appName("JdbcSource")
  7. .master("local[2]").getOrCreate()
  8.  
  9. import sparkSession.implicits._
  10. //2.加载数据源
  11. val urlData: DataFrame = sparkSession.read.format("jdbc").options(Map(
  12. "url" -> "jdbc:mysql://localhost:3306/urlcount",
  13. "driver" -> "com.mysql.jdbc.Driver",
  14. "dbtable" -> "url_data",
  15. "user" -> "root",
  16. "password" -> "root"
  17. )).load()
  18.  
  19. //3.uid>2
  20. val r = urlData.filter($"uid" > 2)
  21. val rs: DataFrame = r.select($"xueyuan", $"number_one")
  22.  
  23. //val rs: DataFrame = r.select($"xueyuan")
  24.  
  25. //写入以text格式
  26. //rs.write.text("e:/saveText")
  27.  
  28. //写入以json格式
  29. //rs.write.json("e:/saveJson")
  30.  
  31. //写入以csv格式
  32. rs.write.csv("e:/saveCsv")
  33.  
  34. //rs.write.parquet("e:/savePar")
  35.  
  36. rs.show()
  37. sparkSession.stop()
  38. }
  39. }

三、Json作为数据源

  1. import org.apache.spark.sql.{DataFrame, Dataset, Row, SparkSession}
  2.  
  3. object JsonSource {
  4. def main(args: Array[String]): Unit = {
  5. //1.创建sparkSession
  6. val sparkSession: SparkSession = SparkSession.builder().appName("JsonSource")
  7. .master("local[2]").getOrCreate()
  8.  
  9. import sparkSession.implicits._
  10. //2.读取json数据源
  11. val jread: DataFrame = sparkSession.read.json("e:/saveJson")
  12.  
  13. //3.处理数据
  14. val fread: Dataset[Row] = jread.filter($"xueyuan" === "bigdata")
  15.  
  16. //4.触发action
  17. fread.show()
  18.  
  19. //5.关闭资源
  20. sparkSession.stop()
  21. }
  22. }

四、Csv作为数据源

  1. import org.apache.spark.sql.{DataFrame, Dataset, Row, SparkSession}
  2.  
  3. object CsvSource {
  4. def main(args: Array[String]): Unit = {
  5. //1.创建sparkSession
  6. val sparkSession: SparkSession = SparkSession.builder().appName("CsvSource")
  7. .master("local[2]").getOrCreate()
  8.  
  9. import sparkSession.implicits._
  10. //2.读取csv数据源
  11. val cread: DataFrame = sparkSession.read.csv("e:/saveCsv")
  12.  
  13. //3.处理数据
  14. val rdf = cread.toDF("id", "xueyuan")
  15. val rs = rdf.filter($"id" <= 3)
  16.  
  17. //4.触发action
  18. rs.show()
  19.  
  20. //5.关闭资源
  21. sparkSession.stop()
  22. }
  23. }

Spark 数据源的更多相关文章

  1. 大数据技术之_19_Spark学习_03_Spark SQL 应用解析 + Spark SQL 概述、解析 、数据源、实战 + 执行 Spark SQL 查询 + JDBC/ODBC 服务器

    第1章 Spark SQL 概述1.1 什么是 Spark SQL1.2 RDD vs DataFrames vs DataSet1.2.1 RDD1.2.2 DataFrame1.2.3 DataS ...

  2. Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets Guide | ApacheCN

    Spark SQL, DataFrames and Datasets Guide Overview SQL Datasets and DataFrames 开始入门 起始点: SparkSession ...

  3. Spark官方1 ---------Spark SQL和DataFrame指南(1.5.0)

    概述 Spark SQL是用于结构化数据处理的Spark模块.它提供了一个称为DataFrames的编程抽象,也可以作为分布式SQL查询引擎. Spark SQL也可用于从现有的Hive安装中读取数据 ...

  4. Spark SQL官网阅读笔记

    Spark SQL是Spark中用于结构化数据处理的组件. Spark SQL可以从Hive中读取数据. 执行结果是Dataset/DataFrame. DataFrame是一个分布式数据容器.然而D ...

  5. 【Spark深入学习 -16】官网学习SparkSQL

    ----本节内容-------1.概览        1.1 Spark SQL        1.2 DatSets和DataFrame2.动手干活        2.1 契入点:SparkSess ...

  6. Spark(1.6.1) Sql 编程指南+实战案例分析

    首先看看从官网学习后总结的一个思维导图 概述(Overview) Spark SQL是Spark的一个模块,用于结构化数据处理.它提供了一个编程的抽象被称为DataFrames,也可以作为分布式SQL ...

  7. Spark的MLlib和ML库的区别

    机器学习库(MLlib)指南 MLlib是Spark的机器学习(ML)库.其目标是使实际的机器学习可扩展和容易.在高层次上,它提供了如下工具: ML算法:通用学习算法,如分类,回归,聚类和协同过滤 特 ...

  8. Apache Spark 2.2.0 中文文档

    Apache Spark 2.2.0 中文文档 - 快速入门 | ApacheCN Geekhoo 关注 2017.09.20 13:55* 字数 2062 阅读 13评论 0喜欢 1 快速入门 使用 ...

  9. Hadoop spark mongo复制集

    启动hadoop cd /usr/local/hadoop/hadoop $hadoop namenode -format # 启动前格式化namenode $./sbin/start-all.sh ...

随机推荐

  1. codeforces水题100道 第四题 Codeforces Round #105 (Div. 2) A. Insomnia cure (math)

    题目链接:http://www.codeforces.com/problemset/problem/148/A题意:求1到d中有多少个数能被k,l,m,n中的至少一个数整出.C++代码: #inclu ...

  2. codeforces水题100道 第三题 Codeforces Beta Round #47 A. Domino piling (math)

    题目链接:http://www.codeforces.com/problemset/problem/50/A题意:一个NxM的举行中最多能放多少个1x2的矩形.C++代码: #include < ...

  3. nginx+php-fpm 报“File not found.”

    找网上找了很多帖子,大都是说nginx中的$document_root$换成绝对路径,但是依然不能解决问题 后再把php-fpm配置文件中的 [www]下边的 usr = apache group = ...

  4. 【技术分享会】 @第五期 angularjs

    前言 AngularJS 最初由Misko Hevery 和Adam Abrons于2009年开发,后来成为了Google公司的项目.AngularJS弥补了HTML在构建应用方面的不足,其通过使用标 ...

  5. WP8.1学习系列(第五章)——中心控件Hub或透视控件Pivot交互UX

    具有主页菜单(中心或透视控件)的中心应用中心 你可能要设计包含许多功能的应用.当你看着这些功能时,可能会决定将它们整理到独立的区域中.这些区域最终会成为用户要访问的应用的独立部分.你需要设计一个简便的 ...

  6. Linux命令 swap:内存交换空间

    swap 内存交换空间的概念 swap使用上的限制

  7. hdu3507 Print Article[斜率优化dp入门题]

    Print Article Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)To ...

  8. C语言位操作初步

    位操作允许程序员对单独的位进行操作,例如,早某些机器上,短整型占16位,位操作将每一位单独操作. 位操作允许程序员设置.清除.测试与其他的操作,这些操作如下表: 操作 含义 & 按位与 | 按 ...

  9. Thinkphp框架下对某个字段查询数据的时候进行唯一过滤,返回唯一不同的值

    方法一. DISTINCT 方法用于返回唯一不同的值 . *distinct方法的参数是一个布尔值. 用法: $data = $Model->Distinct(true)->field(' ...

  10. ipv4组播预留地址

    列表如下: 224.0.0.0 基准地址(保留) 224.0.0.1 所有主机的地址 224.0.0.2 所有组播路由器的地址 224.0.0.3 不分配 224.0.0.4 dvmrp 路由器 22 ...