Spark SQL 加载数据
第一种方式: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 加载数据相关推荐
- CC00053.pbpositions——|HadoopPB级数仓.V11|——PB数仓.v11|核心交易分析|DIM层建表|加载数据|
一.DIM层建表加载数据:DIM层建表加载数据概述 ### --- 首先要确定哪些是事实表.哪些是维表.绿色的是事实表,灰色的维表~~~ 用什么方式处理维表,每日快照.拉链表? ~~~ 小表使用每日快 ...
- Spark-SQL从MySQL中加载数据以及将数据写入到mysql中(Spark Shell方式,Spark SQL程序)
1. JDBC Spark SQL可以通过JDBC从关系型数据库中读取数据的方式创建DataFrame,通过对DataFrame一系列的计算后,还可以将数据再写回关系型数据库中. 1.1. 从MySQ ...
- spark mysql 写_Spark-SQL从MySQL中加载数据以及将数据写入到mysql中(Spark Shell方式,Spark SQL程序)...
1. JDBC Spark SQL可以通过JDBC从关系型数据库中读取数据的方式创建DataFrame,通过对DataFrame一系列的计算后,还可以将数据再写回关系型数据库中. 1.1. 从MySQ ...
- spark加载数据的方式
spark.read.load是加载数据的通用方法 对不同格式文件采用不同的format方式SparkSQL的默认数据源为Parquet格式,Parquet是一种能够有效存储嵌套数据的列示存储格式. ...
- 深度实践SPARK机器学习_学习笔记_第二章2.3加载数据
2.3加载数据 1.下载数据文件u.user head -3 u.user ##查看文件前几行 cat u.user |wc -l 或者 more u.user |wc -l ##数文件记录数 ...
- HIve的概念,发展,历史,部署,入门,加载数据
Hive – 天天会用到的hive #产生背景 MapReduce编程不方便:开发.测试.需求变更传统关系型数据库人员的需要 关系型数据库:是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方 ...
- Spark动态加载外部资源文件
Spark动态加载外部资源文件 1.spark-submit --files 动态加载外部资源文件 之前做一个关于Spark的项目时,因项目中需要读取某个静态资源文件,然后在本地IDEA测试一切皆正常 ...
- 【Spark实训】-- Spark SQL结构化数据文件处理 ②
目录 题目:统计分析航空公司客户数据的空值以及异常值. 1.训练要点 2.需求说明 3.实现思路及步骤 4.具体实现过程代码与截图: 题目:统计分析航空公司客户数据的空值以及异常值. 1.训练要点 ( ...
- oracle 加载数据戽_走进大数据丨 ETL - Load(数据加载)
LOAD 加载经转换和汇总的数据到目标数据仓库中,可实现SQL或批量加载数据加载(Load) 经过数据转换生成的文件的结构与数据仓库数据表的结构完全一致,可以直接通过数据加载工具,以Bulk Load ...
最新文章
- 机器学习——Java调用sklearn生成好的Logistic模型进行鸢尾花的预测
- Qt5.9使用QWebEngineView加载网页速度非常慢,问题解决
- iOS打电话发短信发邮件总结
- 【MySQL】性能优化之 straight_join
- matlab meshgrid函数_matlab入门(三)图像可视化
- 开始研究WEKA,一个开源java的数据挖掘工具
- Eclipse中JSP生成的class文件去了哪里?(转)
- 喜欢就争取,得到就珍惜,错过就忘记—dbGet(二)
- Java密码类型_java加密类型和算法名称
- joystick手柄驱动安卓_JoyStick for android2.3 游戏手柄功能开发
- idea插件开发教程
- Linux tar gzip压缩和解压
- java代码生成可识别二维码
- Duke的咆哮语录②:我求求你们跟我学一下代码“分层”吧!
- 网易2017实习生招聘面试经历
- 爬楼梯当中的递归简化计算
- 【软件推荐】身为高级unity工程师,电脑上的软件一览表,从工作顺序带你一览高级unity工程师所用的软件,如果高级是你的目标,这篇博客绝对不会让你失望
- 渗透测试中信息收集的那些事
- 10大PHP开源网店系统
- java 电梯类图_Java实现目的选层电梯的调度
热门文章
- HMAC-MD5算法原理及实现
- Java中JSON字符串与java对象的互换实例详解
- SpringBoot与SpringCloud的关系与区别
- 奇怪了,ADD方法会少插入字段?
- 使用Fiddler进行iOS APP的HTTP/HTTPS抓包
- MySQL启动mycat分库分表报错Java HotSpotTM 64-Bit Server VM warning: ignoring option MaxPermSize=64M
- html教程自适应,Html-自适应
- 【微信小程序】小程序之自定义头部导航栏背景图
- arcgis for android离线编辑,操作方法:直接从 Android 或 iOS 设备访问 Collector for ArcGIS 中的离线编辑内容...
- ajax无刷新页面切换,历史记录后退前进解决方案