实验三 Spark SQL基础编程

这篇具有很好参考价值的文章主要介绍了实验三 Spark SQL基础编程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实验三 Spark SQL基础编程

1.实验目的

1. 掌握 Spark SQL 的基本编程方法;

2. 熟悉 RDD 到 DataFrame 的转化方法;

3. 熟悉利用 Spark SQL 管理来自不同数据源的数据。

2.实验内容

1.Spark SQL 基本操作 将下列 JSON 格式数据复制到 Linux 系统中,并保存命名为 employee.json。

{ "id":1, "name":"Ella", "age":36 }

{ "id":2, "name":"Bob", "age":29 }

{ "id":3, "name":"Jack", "age":29 }

{ "id":4, "name":"Jim", "age":28 }

{ "id":4, "name":"Jim", "age":28 }

{ "id":5, "name":"Damon" }

{ "id":5, "name":"Damon" }

为 employee.json 创建 DataFrame,并写出 Python 语句完成下列操作:

(1)查询所有数据;

(2)查询所有数据,并去除重复的数据;

(3)查询所有数据,打印时去除 id 字段;

(4)筛选出 age>30 的记录;

(5)将数据按 age 分组;

(6)将数据按 name 升序排列;

(7)取出前 3 行数据;

(8)查询所有记录的 name 列,并为其取别名为 username;

(9)查询年龄 age 的平均值;

(10)查询年龄 age 的最小值。

创建json文件

echo '{ "id":1, "name":"Ella", "age":36 }' > employee.json
echo '{ "id":2, "name":"Bob", "age":29 }' >> employee.json
echo '{ "id":3, "name":"Jack", "age":29 }' >> employee.json
echo '{ "id":4, "name":"Jim", "age":28 }' >> employee.json
echo '{ "id":4, "name":"Jim", "age":28 }' >> employee.json
echo '{ "id":5, "name":"Damon" }' >> employee.json
echo '{ "id":5, "name":"Damon" }' >> employee.json

参考代码:关键代码如下。

#导入
....
//创建sprak对象
....

df = spark.read.json("employee.json")


df.show()


df_distinct = df.distinct()
df_distinct.show()


df_without_id = df.select("name", "age")
df_without_id.show()

df_age_gt_30 = df.filter(col("age") > 30)
df_age_gt_30.show()

df_grouped_by_age = df.groupBy("age").count()
df_grouped_by_age.show()

df_sorted_by_name = df.orderBy("name")
df_sorted_by_name.show()
df_top_3 = df.limit(3)
df_top_3.show()

df_with_username = df.select(col("name").alias("username"))
df_with_username.show()


print(df.select(avg("age")).first()[0])


print(df.select(min("age")).first()[-3] )

//关闭
...

实验三 Spark SQL基础编程

 文章来源地址https://www.toymoban.com/news/detail-455627.html

2.编程实现将 RDD 转换为 DataFrame 源文件内容如下(包含 id,name,age):

1,Ella,36

2,Bob,29

3,Jack,29

请将数据复制保存到 Linux 系统中,命名为 employee.txt,实现从 RDD 转换得到 DataFrame,并按“id:1,name:Ella,age:36”的格式打印出 DataFrame 的所有数据。

请写出 程序代码。

关键代码如下:

# 创建SparkSession
.......

# 定义源文件的结构类型

.......
# 读取源文件并创建RDD
....

# 将RDD转换为DataFrame
df = spark.createDataFrame(rdd, schema)

# 打印DataFrame的所有数据
df.show(truncate=False)

# 将DataFrame的数据按指定格式打印出来
df_string = df.rdd \
    .map(lambda row: f"id:{row['id']},name:{row['name']},age:{row['age']}") \
    .collect()

for data in df_string:
    print(data)

.......

 实验三 Spark SQL基础编程

 

3. 编程实现利用 DataFrame 读写 MySQL 

(1)在 MySQL 数据库中新建数据库 sparktest,再创建表 employee,包含如表 1 所示 的两行数据

表 1 employee

实验三 Spark SQL基础编程

 

(2)配置 Spark 通过 JDBC 连接数据库 MySQL,编程实现利用 DataFrame 插入如表 2 所 示的两行数据到 MySQL 中,最后打印出 age 的最大值和 age 的总和。

表 2 employee

实验三 Spark SQL基础编程

sql语句:

CREATE DATABASE sparktest;

USE sparktest;

CREATE TABLE employee (
  id INT PRIMARY KEY,
  name VARCHAR(50),
  gender CHAR(1),
  age INT
);

INSERT INTO employee (id, name, gender, age) VALUES
(1, 'Alice', 'F', 22),
(2, 'John', 'M', 25);

 python代码

from pyspark.sql import SparkSession

# 创建SparkSession
spark = SparkSession.builder \
    .appName("MySQL Example") \
    .getOrCreate()

# 定义MySQL连接信息
mysql_host = "localhost"
mysql_port = "3306"
mysql_database = "sparktest"
mysql_table = "employee"
mysql_username = "root"

mysql_password = "root"

# 创建DataFrame
data = [("3", "Mary", "F", 26), ("4", "Tom", "M", 23)]
columns = ["id", "name", "gender", "age"]
df = spark.createDataFrame(data, columns)

# 写入MySQL数据库
df.write.format("jdbc") \
    .option("url", f"jdbc:mysql://{mysql_host}:{mysql_port}/{mysql_database}&useSSL=false") \
    .option("dbtable", mysql_table) \
    .option("user", mysql_username) \
    .option("password", mysql_password) \
    .mode("append") \
    .save()

# 从MySQL数据库读取数据
df_mysql = spark.read.format("jdbc") \
    .option("url", f"jdbc:mysql://{mysql_host}:{mysql_port}/{mysql_database}") \
    .option("dbtable", mysql_table) \
    .option("user", mysql_username) \
    .option("password", mysql_password) \
    .load()

# 计算age的最大值和总和
max_age = df_mysql.selectExpr("max(age)").collect()[0][0]
sum_age = df_mysql.selectExpr("sum(age)").collect()[0][0]

# 打印结果
print("Max Age:", max_age)
print("Sum of Age:", sum_age)

# 关闭SparkSession
spark.stop()

 

实验三 Spark SQL基础编程

实验三 Spark SQL基础编程

 3.参考代码

https://download.csdn.net/download/weixin_41957626/87780630

 

实验三 Spark SQL基础编程

 

到了这里,关于实验三 Spark SQL基础编程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spark编程实验五:Spark Structured Streaming编程

    目录 一、目的与要求 二、实验内容 三、实验步骤 1、Syslog介绍 2、通过Socket传送Syslog到Spark 3、Syslog日志拆分为DateFrame 4、对Syslog进行查询 四、结果分析与实验体会 1、通过实验掌握Structured Streaming的基本编程方法; 2、掌握日志分析的常规操作,包括拆分日志方法和分析场景

    2024年02月20日
    浏览(39)
  • spark实验三-spark进阶编程

    实验目标: (1)   掌握在IntelliJ IDEA 中操作spark程序开发 (2)   打包程序提交集群运行 实验说明: 现有一份某省份各地区租房信息文件 house.txt,文件中共有8个数据字段,字段说明如下表所示: 字段名称 说明 租房ID 租房编号 标题 发布的租房标题 链接 网址,可查看租房信息

    2024年04月27日
    浏览(32)
  • Spark编程实验六:Spark机器学习库MLlib编程

    目录 一、目的与要求 二、实验内容 三、实验步骤 1、数据导入 2、进行主成分分析(PCA) 3、训练分类模型并预测居民收入  4、超参数调优 四、结果分析与实验体会 1、通过实验掌握基本的MLLib编程方法; 2、掌握用MLLib解决一些常见的数据分析问题,包括数据导入、成分分析

    2024年02月20日
    浏览(42)
  • 实验2-spark编程

    (1)通过实验掌握Spark的基本编程方法; (2)熟悉RDD到DataFrame的转化方法; (3)熟悉利用Spark管理来自不同数据源的数据。 请参照给出的数据score.txt,该数据集包含了某大学计算机系的成绩,数据格式如下所示:   Tom,DataBase,80   Tom,Algorithm,50   Tom,DataStructure,60   Jim,DataBa

    2024年04月12日
    浏览(23)
  • 实验7 Spark初级编程实践

    一、实验目的 掌握使用 Spark 访问本地文件和 HDFS 文件的方法 掌握 Spark 应用程序的编写、编译和运行方法 二、实验平台 操作系统:Ubuntu18.04(或 Ubuntu16.04) Spark 版本:2.4.0 Hadoop 版本:3.1.3 三、实验内容和要求 1. 安装 Hadoop 和 Spark 进人 Linux 操作系统,完成 Hadoop 伪分布式模

    2024年02月06日
    浏览(39)
  • Spark编程实验一:Spark和Hadoop的安装使用

    目录 一、目的与要求 二、实验内容 三、实验步骤 1、安装Hadoop和Spark 2、HDFS常用操作 3、Spark读取文件系统的数据 四、结果分析与实验体会 1、掌握在Linux虚拟机中安装Hadoop和Spark的方法; 2、熟悉HDFS的基本使用方法; 3、掌握使用Spark访问本地文件和HDFS文件的方法。 1、安装

    2024年04月14日
    浏览(35)
  • 大数据编程实验四:Spark Streaming

    一、目的与要求 1、通过实验掌握Spark Streaming的基本编程方法; 2、熟悉利用Spark Streaming处理来自不同数据源的数据。 3、熟悉DStream的各种转换操作。 4、熟悉把DStream的数据输出保存到文本文件或MySQL数据库中。 二、实验内容 1.参照教材示例,利用Spark Streaming对三种类型的基

    2024年02月03日
    浏览(54)
  • 实验四 Spark Streaming编程初级实践

    数据流  :数据流通常被视为一个随时间延续而无限增长的动态数据集合,是一组顺序、大量、快速、连续到达的数据序列。通过对流数据处理,可以进行卫星云图监测、股市走向分析、网络攻击判断、传感器实时信号分析。 1.下载安装包 https://www.apache.org/dyn/closer.lua/flume/

    2024年04月26日
    浏览(47)
  • 大数据实验 实验六:Spark初级编程实践

    实验环境:Windows 10 Oracle VM VirtualBox 虚拟机:cnetos 7 Hadoop 3.3 因为Hadoop版本为3.3所以在官网选择支持3.3的spark安装包 解压安装包到指定文件夹 配置spark-env.sh 启动成功 (1) 在spark-shell中读取Linux系统本地文件“/home/hadoop/test.txt”,然后统计出文件的行数; (2) 在spark-shell中读

    2024年02月04日
    浏览(85)
  • 实训笔记——Spark SQL编程

    Spark SQL属于Spark计算框架的一部分,是专门负责结构化数据的处理计算框架,Spark SQL提供了两种数据抽象:DataFrame、Dataset,都是基于RDD之上的一种高级数据抽象,在RDD基础之上增加了一个schema表结构。 1.1 创建Spark SQL的编程项目,scala语言支持的 1.2 引入编程依赖: spark_core_2.

    2024年02月07日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包