马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
创建子模块并添加依赖
在IDEA中创建一个名为Spark-SQL的子模块。
在该子模块的pom.xml文件中添加Spark-SQL的依赖,具体依赖为org.apache.spark:spark-sql_2.12:3.0.0。
界说一个User case class,用于表现用户信息(id、name、age)。
创建一个名为SparkSQLDemo的object,并在此中编写main方法作为步调的入口。
在main方法中,起首创建SparkConf和SparkSession对象,用于设置和启动Spark环境。
使用SparkSession对象的read.json方法读取一个JSON格式的用户数据文件,并将其转换为一个DataFrame对象。
使用DataFrame的show方法展示数据内容。
演示SQL风格语法:通过createOrReplaceTempView方法将DataFrame注册为暂时视图,然后使用spark.sql方法实行SQL查询,并展示查询结果。
演示DSL风格语法:使用DataFrame的select方法选择特定列,并展示结果。
演示RDD、DataFrame、DataSet之间的转换:
创建一个RDD对象,并将其转换为DataFrame对象,再进一步转换为DataSet对象。
演示怎样将DataSet对象转换回DataFrame和RDD,并遍历RDD中的数据。
制止SparkSession
在main方法的最后,调用spark.stop()方法制止SparkSession,开释资源。
自界说函数(UDF)
UDF答应用户界说本身的函数,并在Spark SQL查询中使用。
实验展示了怎样注册一个简单的UDF,该函数吸取一个字符串并返回一个新的字符串(前缀为"Name:")。
通过将DataFrame注册为暂时视图,并在SQL查询中使用自界说的UDF,展示了UDF的现实应用。
自界说聚合函数(UDAF)
UDAF用于实现复杂的聚合逻辑,是Spark SQL处理聚合盘算的紧张工具。
实验展示了两种实现UDAF的方法:弱类型UDAF和强类型UDAF。
弱类型UDAF:通过继续UserDefinedAggregateFunction类并实现相干方法,界说了一个盘算匀称工资的聚合函数。该实现方式较为传统,实用于Spark 3.0之前的 版本。
强类型UDAF:使用Aggregator类创建了一个更为类型 安全的匀称工资聚合函数。这种实现方式在Spark 3.0及以后 版本中更为保举。
在两种实现方式中,都展示了怎样将UDAF注册到SparkSession中,并在SQL查询中使用它来盘算匀称工资。
|