待处理文件

准备待处理文件student.data,内容如下:

1|vincent|13827460000|gvark@eyou.com
2|jenny|13827460002|ovwgofpa@56.com
3|sofia|13827460003|jfbmgpm@netease.com
4|natasha|13827460004|vjtw@35.com
5|catalina|13827460005|bpnoc@qq.com
6|jax|13827460006|rfieancklpvq@yahoo.com.cn
7|missfortune|13827460007|crwglpmmwsv@qq.com
8|anny|13827460008|nmbigtektdbow@qq.com
9|jinx|13827460009|jqu@xinhuanet
10|ezrio|13827460010|wvvoio@netease.com
11|lucas|13827460011|fgn@email.com.cn
12||13827460012|klukgp@yahoo.com.cn
13|NULL|13827460013|pgovoloacfuoed@etang.com

特别注意最后第二个字段有特点。

代码实现

首先测试分隔符:

package cn.ac.iie.sparkimport org.apache.spark.sql.SparkSession/*** DataFrame中的操作*/
object DataFrameCase {def main(args: Array[String]): Unit = {val DataFrameCase = SparkSession.builder().appName("DataFrameCase").master("local[2]").getOrCreate()val rdd = DataFrameCase.sparkContext.textFile("file:///E:/test/student.data")// 注意需要导入隐式转换import DataFrameCase.implicits._val studenntDF = rdd.map(_.split("\\")).map(line => Student(line(0).toInt, line(1), line(2), line(3))).toDF()studenntDF.show()DataFrameCase.close()}case class Student(id: Int, name: String, phone: String, email: String)
}

输出如下:

注意分隔符应该使用转义字符进行转移,否则出现下面的情况,就不是我们所期望的了:

同时可以看到,当邮箱长度过长时,会出现...的情况。
可以使用show(20, false)重载方法(第一个参数表示显示多少行,第二个方式表示是否截取),来解决这个问题。

  • studenntDF.select("email").show:只显示email数据
  • studenntDF.filter("name='' OR name='NULL'").show(false):只显示name为空或者NULL的数据
  • studenntDF.filter("SUBSTR(name,0,1)='v'").show(false):显示name第一个字符为v的数据。SUBSTRSUBSTRING等价。
  • studenntDF.sort(studenntDF.col("name")).show():按照name进行字母顺序排序
  • studenntDF.sort(studenntDF.col("name").desc).show():按照name进行降序排序
  • studenntDF.sort(studenntDF.col("name").desc, studenntDF.col("email")).show():按照name进行降序,email进行升序
  • studenntDF.join(studenntDF2, studenntDF.col("id") === studenntDF2.col("id"), "inner").show():进行join操作,默认是内连接。

SparkSQL之DataFrame案例相关推荐

  1. SparkSQL中UDAF案例分析

    SparkSQL中UDAF案例分析 1.统计单词的个数 package com.bynear.spark_sql; import org.apache.spark.sql.Row; import or ...

  2. PySpark | SparkSQL入门 | DataFrame入门

    文章目录 一.快速入门 1. 什么是SparkSQL 2. 为什么要学习SparkSQL 3. SparkSQL特点 二.SparkSQL概述 1. SparkSQL和Hive的异同 2. Spark ...

  3. SparkSql之电影案例SQL编写

    SparkSql之电影案例SQL编写 需求1:查找电影评分个数超过50,且平均评分较高的前十部电影名称及其对应的平均评分,结果以下面字段结构输出,保存成任意文本格式(txt\csv)或者存储到数据库. ...

  4. 史上最简单的spark教程第十三章-SparkSQL编程Java案例实践(终章)

    Spark-SQL的Java实践案例(五) 本章核心:JDBC 连接外部数据库,sparkSQL优化,故障监测 史上最简单的spark教程 所有代码示例地址:https://github.com/My ...

  5. SparkSql之DataFrame操作

    Spark SQL中的DataFrame类似于一张关系型数据表.在关系型数据库中对单表或进行的查询操作,在DataFrame中都可以通过调用其API接口来实现.可以参考,Scala提供的DataFra ...

  6. SparkSQL之DataFrame 编程(创建DataFrame ,DataFrame数据运算操作 ,输出存储DataFrame)(11)

    一  新的编程入口 SparkSession SparkSession 是 Spark 最新的 SQL 查询起始点 ,实质上是 SQLcontext 和 SparkContext 的组合 ,所以在 S ...

  7. SparkSQL之DataFrame API

    测试文件 测试文件employees.json,内容如下: {"name":"Michael", "salary":3000, " ...

  8. sparksql:dataframe数据写入到Hbase中

    一.步骤:在idea中编程 1.1 添加依赖 <?xml version="1.0" encoding="UTF-8"?> <project ...

  9. 35、sparkSQL及DataFrame

    一.saprkSQL背景 Spark 1.0版本开始,推出了Spark SQL.其实最早使用的,都是Hadoop自己的Hive查询引擎:但是后来Spark提供了Shark:再后来Shark被淘汰,推出 ...

最新文章

  1. CUDA上的量化深度学习模型的自动化优化
  2. freemarker中boolean变量的读取
  3. SAP-ABAP DESCRIBE FIELD 用法
  4. 如何在CSMAR中找到不同公司,不同时间的数据呢?
  5. Little Sub and Triangles
  6. POJ 3084 Panic Room
  7. jQuery表单校验
  8. 函数使用了堆栈的字节超过_在C语言中如何访问堆栈?
  9. mysql修改表字段小数点精度_技术篇-将字段类型decimal批量处理从2位改为4位小数点sql,解决数据库存储精度...
  10. Kubernetes学习笔记 ~~~黑马程序员
  11. python一键扣图,5行Python代码一键视频抠图
  12. SuperMap iDesktop / iDesktopX 加载大疆智图(DJI Terra)导出的OSGB数据效果异常的绕行方案
  13. [cnblogs镜像]苹果操作系统名称演变史 新名称macOS
  14. ZFM_RFC_FIDOC-创建财务凭证-BAPI_ACC_DOCUMENT_CHECK/BAPI_ACC_DOCUMENT_POST/POSTING_INTERFACE_DOCUMENT
  15. wamp php打不开,wamp无法打开phpmyadmin
  16. 新加硬盘但计算机里找不着,电脑开机找不到硬盘怎么办
  17. ROM、PROM、EPROM、EEPROM、FLASH ROM
  18. 易语云模块-易语言邮件发送模块下载(含命令详解)
  19. 我所关注,推荐的公众号---软件那些事儿
  20. 2021年铜陵高考成绩查询,2021年铜陵高考状元是谁分数多少分,历年铜陵高考状元名单...

热门文章

  1. Android开发六 电话拔号器
  2. 成为优秀程序员的十个Tips
  3. mysql 分库分表的方法
  4. promise使用promise进行封装http请求接口
  5. Linux之Centos允许root连接ftp
  6. python如何定义类_Python中类的定义、继承及使用对象实例详解
  7. 本机显示服务器文本信息,打开文档显示云服务器
  8. 面试前需要准备的五个步骤
  9. linux 如何创建内核进程,Linux内核的进程创建和执行.pdf
  10. vscode 新建cpp文件_利用vscode搭建c