Spark-SQL编程

  1. Spark-SQL连接Hive

连接方式概述:Spark SQL编译时可选择包含Hive支持,包含后能支持Hive表访问、UDF、HQL等功能,且无需事先安装Hive。连接方式有内嵌Hive、外部Hive、Spark-SQL CLI、Spark beeline及代码操作。

具体连接方式

内嵌Hive:使用时无需额外操作,但实际生产中很少使用。

外部Hive:在spark-shell中连接外部Hive,需拷贝hive-site.xml到conf/目录并修改连接地址,将MySQL驱动拷贝到jars/目录,拷贝core-site.xml和hdfs-site.xml到conf/目录,最后重启spark-shell。

Spark beeline:Spark Thrift Server兼容HiveServer2,可使用hive的beeline访问。连接步骤与连接外部Hive类似,还需启动Thrift Server,再用beeline连接。

Spark-SQL CLI:可在本地运行Hive元数据服务并执行查询任务。将mysql驱动和hive-site.xml分别放入jars/和conf/目录,运行bin/目录下的spark-sql.cmd即可。

代码操作Hive:导入spark-hive_2.12和hive-exec依赖,将hive-site.xml拷贝到项目resources目录。代码中创建SparkSession时启用Hive支持,可执行Hive相关操作。若出现权限问题,可设置HADOOP_USER_NAME解决;还可通过配置spark.sql.warehouse.dir指定数据库仓库地址。

  1. 统计有效数据条数及用户数量最多的前二十个地址

实验内容:利用Spark-SQL统计有效数据(uid、phone、addr字段均无空值)条数,并找出用户数量最多的前二十个地址。

数据处理思路:数据为json格式,需用get_json_object函数转换格式后分析处理。

代码示例(Scala)

scala

import org.apache.spark.sql.SparkSession

import org.apache.spark.sql.functions.get_json_object

object SparkSQLExperiment {

def main(args: Array[String]): Unit = {

val spark = SparkSession.builder()

.appName("SparkSQLExperiment")

.master("local[*]")

.getOrCreate()

// 读取json数据

val df = spark.read.json("path/to/your/json/data.json")

// 提取字段并过滤有效数据

val validData = df.select(

get_json_object("value", ".uid").alias("uid"),

get_json_object("value", ".phone").alias("phone"),

get_json_object("value", ".addr").alias("addr")

).filter("uid".isNotNull \&\& "phone".isNotNull && $"addr".isNotNull)

// 统计有效数据条数

val validDataCount = validData.count()

println(s"有效数据条数: $validDataCount")

// 按地址分组统计用户数量并取前二十

val top20Addrs = validData.groupBy("addr").count().orderBy($"count".desc).limit(20)

top20Addrs.show()

spark.stop()

}

}

相关推荐
计算机编程小央姐2 小时前
【Spark+Hive+hadoop】基于spark+hadoop基于大数据的人口普查收入数据分析与可视化系统
大数据·hadoop·数据挖掘·数据分析·spark·课程设计
计算机毕设残哥13 小时前
【Spark+Hive+hadoop】人类健康生活方式数据分析
大数据·hive·hadoop·python·数据分析·spark·dash
IT研究室1 天前
大数据毕业设计选题推荐-基于大数据的农产品交易数据分析与可视化系统-Spark-Hadoop-Bigdata
大数据·hadoop·数据分析·spark·毕业设计·源码·bigdata
想你依然心痛1 天前
Spark大数据分析与实战笔记(第五章 HBase分布式数据库-05)
数据库·分布式·spark
鼠鼠我捏,要死了捏2 天前
Spark Structured Streaming端到端延迟优化实践指南
spark·performance-optimization·structured-streaming
武子康2 天前
大数据-106 Spark Graph X案例:1图计算、2连通图算法、3寻找相同用户 高效分区、负载均衡与迭代优化
大数据·后端·spark
计算机编程小央姐2 天前
GitHub热门大数据项目:基于人体生理指标管理的可视化分析系统技术解析
大数据·hadoop·hdfs·数据分析·spark·github·课程设计
IT毕设梦工厂2 天前
大数据毕业设计选题推荐-基于大数据的气候驱动的疾病传播可视化分析系统-Hadoop-Spark-数据可视化-BigData
大数据·hadoop·spark·毕业设计·源码·数据可视化·bigdata
孟意昶2 天前
Spark专题-第二部分:Spark SQL 入门(4)-算子介绍-Exchange
大数据·数据仓库·sql·spark·etl
孟意昶2 天前
Spark专题-第二部分:Spark SQL 入门(2)-算子介绍-Scan/Filter/Project
大数据·hive·分布式·sql·spark