当前位置: 首页 > news >正文

SparkSQL整合Hive

spark-sql可以直接使用hive的元数据

1、环境搭建如下:

## 1、启动hive的元数据服务```shell
# 1、修改hive的配置文件
cd /usr/local/soft/hive-3.1.3/conf# 2、增加配置
vim hive-site.xml<property>
<name>hive.metastore.uris</name>
<value>thrift://master:9083</value>
</property># 3、启动hive元数据服务
nohup  hive --service metastore >> metastore.log 2>&1 &
```## 2、将hive的配置文件同步到spark conf目录下```sql
cp hive-site.xml /usr/local/soft/spark-3.1.3/conf/
```### 3、在spark sql命令行中使用hive的表```shell
#命令行启动spark-sql
spark-sql --master local#指定分区数为1
set spark.sql.shuffle.partitions=1;create external table if not exists students(id bigint comment '学生id',name string comment '学生姓名',age bigint comment '学生年龄',sex string comment '学生性别',clazz string comment '学生班级'
) comment '学生信息表'
row format delimited fields terminated by ','
stored as textfile 
location 'hdfs://master:9000/data/student';select clazz,count(1) as num from students
group by clazz;
```

2、在代码中写spark-sql

import org.apache.spark.SparkContext
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.{DataFrame, Dataset, Row, SparkSession}object Demo1DataFrame {def main(args: Array[String]): Unit = {//1、创建spark sql环境val spark: SparkSession = SparkSession.builder().master("local").appName("df")//指定shuffle之后RDD的分区数.config("spark.sql.shuffle.partitions", 1).getOrCreate()import spark.implicits._//2、读取数据//DataFrame:在RDD的基础上增加了表结构,为了写sqlval studentDF: DataFrame = spark.read.format("csv").option("sep", ",").schema("id STRING,name STRING,age INT,sex STRING,clazz STRING").load("data/students.txt")//查看数据studentDF.show()//创建临时视图studentDF.createOrReplaceTempView("students")//编写sql处理数据val clazzNumDF: DataFrame = spark.sql("""|select clazz,count(1) as num|from students|group by clazz|""".stripMargin)clazzNumDF.show()import org.apache.spark.sql.functions._//使用DSL处理数据val clazzNum: DataFrame = studentDF.groupBy("clazz").agg(count("id") as "num")//保存结果clazzNum.write.format("csv").option("sep", "\t")//.save("data/clazz_num")//使用RDD处理数据val kvDS: RDD[(String, Int)] = studentDF//转换成RDD.rdd.map {//DF中的每一行是一个ROW对象case Row(id, name, age, sex, clazz: String) => (clazz, 1)}kvDS.reduceByKey(_ + _).foreach(println)}
}

相关文章:

SparkSQL整合Hive

spark-sql可以直接使用hive的元数据 1、环境搭建如下&#xff1a; ## 1、启动hive的元数据服务shell # 1、修改hive的配置文件 cd /usr/local/soft/hive-3.1.3/conf# 2、增加配置 vim hive-site.xml<property> <name>hive.metastore.uris</name> <value…...

Vue 3 和 Vue 2区别

Vue 3 是 Vue 2 的全新升级版本&#xff0c;引入了诸多新的特性&#xff0c;并在性能、开发体验、响应式系统等多个方面进行了改进。以下是 Vue 2 和 Vue 3 的详细对比&#xff1a; 1. 生命周期钩子差异 Vue 3 保留了大部分 Vue 2 的生命周期钩子&#xff0c;但部分名称有所调…...

React.memo和useMemo

React.memo和usememo React.memo React.memo是一个高阶组件&#xff0c;对组件进行性能优化&#xff0c;主要用于优化函数组件的性能&#xff0c;如果一个组件在相同的props下渲染出相同的结果&#xff0c;但是又不需要在组件更新的时候重新渲染&#xff0c;就可以使用react.…...

Android中实现网络请求的方式有哪些?

在Android开发中&#xff0c;实现网络请求是开发过程中不可避免的一部分。随着技术的不断发展&#xff0c;Android中出现了多种实现网络请求的方式&#xff0c;每种方式都有其独特的优缺点。 一、HttpURLConnection HttpURLConnection是Java提供的用于发送HTTP请求的标准类&a…...

安卓13usb触摸唤醒系统 android13触摸唤醒

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.编译6.彩蛋1.前言 android13在待机后,需要能够使用触摸屏去唤醒我们的系统,这就需要我们修改系统的相关配置了。 2.问题分析 对于这个问题,我们需要知道安卓的事件分发,通过事件分发,…...

c++常用库函数

一.sort排序 快排的改进算法&#xff0c;评价复杂度为(nlogn). 1.用法 sort(起始地址&#xff0c;结束地址下一位&#xff0c;*比较函数) [起始地址&#xff0c;结束地址) (左开右闭) #include<bits/stdc.h> using namespace std; int main() {//sortvector<int&g…...

CSS 网格布局

网格布局是一个二维布局系统&#xff0c;允许开发者以行和列的形式创建灵活的网络&#xff0c;并将内容放置在网络的单元格中。有些元素可能只占据网络的一个单元&#xff0c;另一些元素则可能占据多行或多列。 网格的大小既可以精确定义&#xff0c;也可以根据自身内容自动计…...

python实现屏幕录制,录音录制工具

python实现屏幕录制&#xff0c;录音录制工具 一&#xff0c;介绍 Python 实现的屏幕录制和录音录制工具是一个便捷的应用程序&#xff0c;旨在帮助用户同时捕捉计算机屏幕上的活动以及与之相关的音频输出。这个工具尤其针对教育工作者、内容创作者、技术支持人员以及任何需要…...

elementui 的 table 组件回显已选数据时候使用toggleRowSelection 方法的坑点

elementui 的 table 组件回显问题 "vue": "^2.7.16", "element-ui": "^2.15.14", 问题描述&#xff1a; 场景&#xff1a;首先我们是通过接口获取到数据之后 然后将返回的数据回显到表格上面 问题&#xff1a;直接将后端返回的数据…...

MATLAB基础应用精讲-【数模应用】负二项回归(附R语言和python代码实现)

目录 前言 几个高频面试题目 负二项回归、Probit回归如何选择 负二项回归 Probit回归 知识储备 逻辑回归 算法原理 多阈值负二项回归模型 模型及估计方法 负二项回归模型 多阈值负二项回归模型 分割阶段 精确估计阈值阶段 ​‌负二项回归的操作步骤 负二项回归…...

20240803 芯动科技 笔试

文章目录 1、单选题1.11.21.31.42、填空题2.12.23、问答题3.13.23.34、编程题4.14.24.3岗位:嵌入式软件工程师(25届校招)(J12042) 题型:4 道单选题,2 道填空题, 3 道简答题,3 道编程题 1、单选题 1.1 已知 5 个元素的出栈序列是 1,2,3,4,5,6 则对应的入栈顺序可能是 …...

如何将 ECharts 图表插入 HTML Canvas

在 Web 开发中&#xff0c;数据可视化是一个常见且重要的需求。ECharts 是一个强大的图表库&#xff0c;而 HTML5 Canvas 则提供了灵活的绘图能力。今天&#xff0c;我们将探讨如何将这两者结合起来&#xff0c;实现将 ECharts 生成的图表插入到 HTML Canvas 中的特定位置。 为…...

突破干扰,无人机自动驾驶技术详解

突破干扰的无人机自动驾驶技术&#xff0c;是一个结合了多学科领域的复杂系统&#xff0c;旨在确保无人机在复杂电磁环境、人为干扰等条件下仍能自主、安全地完成飞行任务。以下是对该技术的详细解析&#xff1a; 一、技术概述 无人机自动驾驶技术通过集成传感器技术、人工智…...

Xamarin学习计划

一、Xamarin 的产生历程 Xamarin 由 Nat Friedman 和 Miguel de Icaza 创立。它的出现主要是为了让开发者能够使用 C#语言来构建跨平台的移动应用程序。 Xamarin 提供了一种统一的开发方式&#xff0c;允许开发者使用熟悉的 C#语言和.NET 框架来开发同时适用于多个平台的应…...

exchange online邮件系统EAM双因素认证技术方案

exchange online邮件系统是指微软推出的电子邮件系统云服务&#xff0c;通常作为office 365和microsoft 365的一个子项目来提供服务。这样用户就不需要自己部署exchange邮件服务器&#xff0c;只需要订阅微软的云服务&#xff0c;然后就可以直接使用微软提供的exchange邮件服务…...

【数据结构与算法】栈和队列

文章目录 一.栈1.1定义 顺序栈和链式栈1.2基本操作1.2.1表示1.2.2初始化1.2.3清空1.2.4销毁1.2.5入栈1.2.6出栈1.2.7取栈顶 1.3共享栈1.3.1定义1.3.2进栈出栈 二.队列2.1定义 顺序队列和链式队列循环队列2.2基本操作2.2.1初始化2.2.2判空2.2.3求队列长度2.2.4取队头元素2.2.5销…...

基于php的图书管理系统

摘 要 随着互联网的发展&#xff0c;许多人都热衷于在线购物&#xff0c;无需离开家就可以获得所需的产品&#xff0c;通过简单的操作&#xff0c;就能够获得快速、准确的配送。 科技已然渗透到进社会的方方面面&#xff0c;让我们的学习、交流、工作变得无比轻松自如。由于…...

k8s Node节点维护

Kubernetes (K8s) 中对 Node 节点的维护是保证集群健康和性能的重要部分。Node 节点通常是 Kubernetes 工作负载的运行环境&#xff0c;负责运行 Pods。当需要对节点进行维护&#xff08;如升级、修复问题、调整配置等&#xff09;时&#xff0c;可能需要将该节点标记为不可用并…...

【航天宏图旗下的PIE engine】

航天宏图旗下的PIE engine是一个集实时分布式计算、交互式分析和数据可视化为一体的在线遥感云计算开放平台&#xff0c;以下是对其的详细介绍&#xff1a; 一、平台背景与定位 PIE-Engine地球科学引擎是航天宏图自主研发的一套基于容器云技术构建的面向地球科学领域的专业P…...

Python酷库之旅-第三方库Pandas(157)

目录 一、用法精讲 716、pandas.Timedelta.view方法 716-1、语法 716-2、参数 716-3、功能 716-4、返回值 716-5、说明 716-6、用法 716-6-1、数据准备 716-6-2、代码示例 716-6-3、结果输出 717、pandas.Timedelta.as_unit方法 717-1、语法 717-2、参数 717-3、…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

深入理解Optional:处理空指针异常

1. 使用Optional处理可能为空的集合 在Java开发中&#xff0c;集合判空是一个常见但容易出错的场景。传统方式虽然可行&#xff0c;但存在一些潜在问题&#xff1a; // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...