第一种方式:Spark SQL可以将数据文件加载成RDD方式,然后将RDD转成DataFrame或者DataSet。
第二种方式:从本地或者Cloud(hdfs hive S3等)

将文件加载成RDD

首先打开控制台,输入命令打开spark-shell
./spark-shell --master local[2] --jars /home/iie4bu/software/mysql-connector-java-5.1.35.jar
然后加载本地文件:
val masterlog = sc.textFile("file:///home/iie4bu/app/spark-2.4.5-bin-2.6.0-cdh5.15.1/logs/spark-iie4bu-org.apache.spark.deploy.master.Master-1-manager.out.2")

此时已经将本地文件加载成RDD了,还无法使用SQL进行查询,因为没有转成DataFrame。

将RDD转成DataFrame

import org.apache.spark.sql.Row
val masterRDD = masterlog.map(x => Row(x))import org.apache.spark.sql.types._
val schemaString = "line"val fields = schemaString.split(" ").map(fieldName => StructField(fieldName, StringType, nullable = true))val schema = StructType(fields)val masterDF = spark.createDataFrame(masterRDD, schema)
masterDF.printSchema
masterDF.show



这样就可以使用DataFrame中的相关查询了。也可以将DataFrame注册成一张表。

将DataFrame注册成表

masterDF.createOrReplaceTempView("master_logs")
spark.sql("select * from master_logs limit 10").show(false)

如果使用JSON或者Parquet,schema信息不需要手写,spark可以进行推测

使用Spark导入外部数据源,这种方式不需要手动写schema了:

val usersDF = spark.read.format("parquet").load("file:///home/iie4bu/app/spark-2.4.5-bin-2.6.0-cdh5.15.1/examples/src/main/resources/users.parquet")
usersDF.printSchema


生成DataFrame之后,也可以使用创建表来执行sql:

usersDF.createOrReplaceTempView("users_info")
spark.sql("select * from users_info where name = 'Ben'").show

更简单的实现方式

spark.sql("select * from parquet.`file:///home/iie4bu/app/spark-2.4.5-bin-2.6.0-cdh5.15.1/examples/src/main/resources/users.parquet` where name = 'Ben'").show

读取hdfs或者s3数据

读取成RDD:

val hdfsRDD = sc.textFile("hdfs://path/file")
val s3RDD = sc.textFile("s3a://bucket/object")

直接读取成DataFrame:

spark.read.format("text").load("hdfs://path/file")
spark.read.format("text").load("s3a://bucket/object")

Spark SQL 加载数据相关推荐

  1. CC00053.pbpositions——|HadoopPB级数仓.V11|——PB数仓.v11|核心交易分析|DIM层建表|加载数据|

    一.DIM层建表加载数据:DIM层建表加载数据概述 ### --- 首先要确定哪些是事实表.哪些是维表.绿色的是事实表,灰色的维表~~~ 用什么方式处理维表,每日快照.拉链表? ~~~ 小表使用每日快 ...

  2. Spark-SQL从MySQL中加载数据以及将数据写入到mysql中(Spark Shell方式,Spark SQL程序)

    1. JDBC Spark SQL可以通过JDBC从关系型数据库中读取数据的方式创建DataFrame,通过对DataFrame一系列的计算后,还可以将数据再写回关系型数据库中. 1.1. 从MySQ ...

  3. spark mysql 写_Spark-SQL从MySQL中加载数据以及将数据写入到mysql中(Spark Shell方式,Spark SQL程序)...

    1. JDBC Spark SQL可以通过JDBC从关系型数据库中读取数据的方式创建DataFrame,通过对DataFrame一系列的计算后,还可以将数据再写回关系型数据库中. 1.1. 从MySQ ...

  4. spark加载数据的方式

    spark.read.load是加载数据的通用方法 对不同格式文件采用不同的format方式SparkSQL的默认数据源为Parquet格式,Parquet是一种能够有效存储嵌套数据的列示存储格式. ...

  5. 深度实践SPARK机器学习_学习笔记_第二章2.3加载数据

    2.3加载数据 1.下载数据文件u.user head -3 u.user ##查看文件前几行 cat u.user |wc -l 或者 more u.user |wc -l    ##数文件记录数 ...

  6. HIve的概念,发展,历史,部署,入门,加载数据

    Hive – 天天会用到的hive #产生背景 MapReduce编程不方便:开发.测试.需求变更传统关系型数据库人员的需要 关系型数据库:是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方 ...

  7. Spark动态加载外部资源文件

    Spark动态加载外部资源文件 1.spark-submit --files 动态加载外部资源文件 之前做一个关于Spark的项目时,因项目中需要读取某个静态资源文件,然后在本地IDEA测试一切皆正常 ...

  8. 【Spark实训】-- Spark SQL结构化数据文件处理 ②

    目录 题目:统计分析航空公司客户数据的空值以及异常值. 1.训练要点 2.需求说明 3.实现思路及步骤 4.具体实现过程代码与截图: 题目:统计分析航空公司客户数据的空值以及异常值. 1.训练要点 ( ...

  9. oracle 加载数据戽_走进大数据丨 ETL - Load(数据加载)

    LOAD 加载经转换和汇总的数据到目标数据仓库中,可实现SQL或批量加载数据加载(Load) 经过数据转换生成的文件的结构与数据仓库数据表的结构完全一致,可以直接通过数据加载工具,以Bulk Load ...

最新文章

  1. 机器学习——Java调用sklearn生成好的Logistic模型进行鸢尾花的预测
  2. Qt5.9使用QWebEngineView加载网页速度非常慢,问题解决
  3. iOS打电话发短信发邮件总结
  4. 【MySQL】性能优化之 straight_join
  5. matlab meshgrid函数_matlab入门(三)图像可视化
  6. 开始研究WEKA,一个开源java的数据挖掘工具
  7. Eclipse中JSP生成的class文件去了哪里?(转)
  8. 喜欢就争取,得到就珍惜,错过就忘记—dbGet(二)
  9. Java密码类型_java加密类型和算法名称
  10. joystick手柄驱动安卓_JoyStick for android2.3 游戏手柄功能开发
  11. idea插件开发教程
  12. Linux tar gzip压缩和解压
  13. java代码生成可识别二维码
  14. Duke的咆哮语录②:我求求你们跟我学一下代码“分层”吧!
  15. 网易2017实习生招聘面试经历
  16. 爬楼梯当中的递归简化计算
  17. 【软件推荐】身为高级unity工程师,电脑上的软件一览表,从工作顺序带你一览高级unity工程师所用的软件,如果高级是你的目标,这篇博客绝对不会让你失望
  18. 渗透测试中信息收集的那些事
  19. 10大PHP开源网店系统
  20. java 电梯类图_Java实现目的选层电梯的调度

热门文章

  1. HMAC-MD5算法原理及实现
  2. Java中JSON字符串与java对象的互换实例详解
  3. SpringBoot与SpringCloud的关系与区别
  4. 奇怪了,ADD方法会少插入字段?
  5. 使用Fiddler进行iOS APP的HTTP/HTTPS抓包
  6. MySQL启动mycat分库分表报错Java HotSpotTM 64-Bit Server VM warning: ignoring option MaxPermSize=64M
  7. html教程自适应,Html-自适应
  8. 【微信小程序】小程序之自定义头部导航栏背景图
  9. arcgis for android离线编辑,操作方法:直接从 Android 或 iOS 设备访问 Collector for ArcGIS 中的离线编辑内容...
  10. ajax无刷新页面切换,历史记录后退前进解决方案