Spark秘籍-头歌spark

第五章章节测验

第一题:

import findspark
findspark.init()
from pyspark.sql import SparkSession
################ Begin ################
# 创建SparkSession对象
sc=SparkSession.builder.master("local[*]").appName('read').getOrCreate()
# 读取文件
df=sc.read.json("file:///data/bigfiles/employee.json")
# 查询DataFrame的所有数据
df.show()
# 查询所有数据,并去除重复的数据
df.distinct().show()
# 查询所有数据,打印时去除id字段
df.drop("id").show()
# 筛选age>20的记录
df.filter(df.age > 30).show()
# 将数据按name分组
df.groupBy("name").count().show()
# 将数据按name升序排列
df.sort(df.name.asc()).show()
# 取出前3行数据
df.take(3)
# 查询所有记录的name列,并为其取别名为username
df.select(df.name.alias("username")).show()
# 查询年龄age的平均值
df.agg({"age":"mean"}).show()
# 查询年龄age的最大值
df.agg({"age":"max"}).show()
# 关闭SparkSession对象
sc.stop()
################ End ################

第二题:

import findspark
findspark.init()
from pyspark.sql import SparkSession
from pyspark.sql.types import Row
################ Begin ################
# 创建SparkSession对象
spark = SparkSession.builder.getOrCreate()
# 创建SparkContext对象
sc = spark.sparkContext
# 读取文本文件
peopleRDD = sc.textFile("file:///data/bigfiles/employee.txt")
# 将 RDD 转换为 DataFrame
rowRDD = peopleRDD.map(lambda line: line.split(",")).map(lambda attributes: Row(id=int(attributes[0]), name=attributes[1], age=int(attributes[2])))
df = spark.createDataFrame(rowRDD)
# 创建临时视图
df.createOrReplaceTempView("employee")
# 执行SQL查询并打印结果
personsDF = spark.sql("SELECT id,name,age FROM employee")
personsDF.show()
# 关闭SparkSession对象
spark.stop()
################ End ################

第三题:

import findspark
findspark.init()
from pyspark import SparkContext
from pyspark.sql import SQLContext
from pyspark.sql.types import Row
from pyspark.sql.types import StructType
from pyspark.sql.types import StructField
from pyspark.sql.types import StringType
from pyspark.sql.types import IntegerType
################ Begin ################
# 创建SparkContext对象
sc = SparkContext( 'local', 'jdbc_test')
spark = SQLContext(sc)
# 读取 MySQL 数据
jdbcDF=spark.read.format("jdbc").option("url","jdbc:mysql://localhost:3306/sparktest").option("driver","com.mysql.jdbc.Driver").option("dbtable","employee").option("user", "root").option("password", "123123").load()
# 插入数据
studentRDD = sc.parallelize(["3 Mary F 26","4 Tom M 23"]).map(lambda line : line.split(" "))
schema = StructType([StructField("id",IntegerType(),True),StructField("name", StringType(), True),StructField("gender", StringType(), True),StructField("age",IntegerType(), True)])
rowRDD = studentRDD.map(lambda p : Row(int(p[0]),p[1].strip(), p[2].strip(),int(p[3])))
employeeDF = spark.createDataFrame(rowRDD, schema)
prop = {}
prop['user'] = 'root'
prop['password'] = '123123'
prop['driver'] = "com.mysql.jdbc.Driver"
employeeDF.write.jdbc("jdbc:mysql://localhost:3306/sparktest",'employee','append', prop)
# 计算 age 字段最大值和总和,输出结果
jdbcDF.collect()
jdbcDF.agg({"age": "max"}).show()
jdbcDF.agg({"age": "sum"}).show()
# 关闭SparkContext对象
sc.stop()

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Spark Streaming是Apache Spark的一个子模块,提供实时数据流处理的功能。它支持多种编程语言,其中包括Scala。因此,您可以使用Scala语言来编写Spark Streaming应用程序。 ### 回答2: Spark Streaming是Spark项目中的一个组件,它可以让我们对于实时数据进行流式处理,同时还支持批处理。使用Spark Streaming可以对实时数据进行分析、处理和存储,为实时分析提供了一个良好的解决方案。 在使用Spark Streaming时,我们可以使用Scala作为编程语言来编写应用程序。Scala是一门基于JVM的编程语言,它具有面向对象和函数式编程的特点,同时也具有静态类型检查和类型推断等特性,因此它非常适合将Spark Streaming与其他Scala库进行结合使用。 在使用Scala编写Spark Streaming应用程序时,我们通常需要使用一些Scala的头歌,这些头歌可以帮助我们更加方便地使用Spark Streaming的API,并且提高代码的可读性和可维护性。下面介绍几个常用的Scala头歌: 1. import org.apache.spark.SparkConf 这个头歌用来创建SparkConf对象,这个对象代表着Spark应用程序的配置信息,包括了应用程序的名称、运行模式、运行的Master节点等等。 2. import org.apache.spark.streaming.{Seconds, StreamingContext} 这个头歌用来创建StreamingContext对象,这个对象代表着Spark Streaming应用程序的上下文环境,通过这个对象我们可以定义输入流、转换流和输出流的处理逻辑。 3. import org.apache.spark.streaming.kafka.KafkaUtils 这个头歌用来与Apache Kafka集成,使用这个头歌可以很方便地将实时数据从Kafka中读取到Spark Streaming中进行分析和处理。 4. import org.apache.spark.streaming.dstream.DStream 这个头歌代表着Spark Streaming中的一个流,我们可以对这个流进行各种操作,例如map、filter、reduce等等,从而实现对实时数据的处理和分析。 除了以上几个Scala头歌之外,还有很多其他的头歌可以用来增强Spark Streaming的功能,例如org.apache.spark.streaming.flume、org.apache.spark.streaming.twitter等等,使用这些头歌可以相应地处理来自不同来源的实时数据。 ### 回答3: Spark Streaming 是 Spark 非常强大的组件之一,它允许你使用类似数据流的方式来处理实时数据。Spark Streaming 采用了类似于微批处理的方式,将连续不断的数据流切割成一个个微批处理来运行,从而实现了实时数据处理。 Scala 是 Spark 开发语言中最为常见的一种,它是一种面向对象和函数式编程的混合语言,拥有简洁的语法、强大的类型系统和函数式编程的一些关键特性。 在 Spark Streaming 框架中,Scala 可以帮助开发者更快速地编写代码,并且 Scala 编写的代码也具有非常好的可读性和可维护性。Scala 还带来了更加强大的函数式编程特性,如高阶函数、匿名函数和模式匹配等,这些特性在处理实时数据流时非常实用。 同时,Scala 也支持面向对象编程,因此可以轻松地使用面向对象编程的设计模式来编写 Spark Streaming 的代码。比如,可以使用 Scala 中的 case class 对输入数据进行模式匹配、使用函数式编程的 map 和 filter 操作对数据流进行转换。 总的来说,Scala 是 Spark Streaming 开发中一首非常好的头歌,Scala 的优秀特性可以帮助我们更快速地开发高性能、可维护和可扩展的实时数据处理应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值