活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 安全隔离版OpenClaw NEW OpenClaw云服务器专属“龙虾“套餐低至1.5折起
  • 聚力AI赋能 天翼云大模型专项 大模型特惠专区·Token Plan 轻享包低至9.9元起
  • 青云志云端助力计划 NEW 一站式科研助手,海外资源安全访问平台,助力青年翼展宏图,平步青云
  • 企业出海解决方案 NEW 助力您的业务扬帆出海,通达全球!
  • 天翼云信创专区 NEW “一云多芯、一云多态”,国产化软件全面适配,国产操作系统及硬件芯片支持丰富
  • 云上钜惠 爆款云主机全场特惠,2核4G只要1.8折起!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

息壤智算

领先开放的智算服务平台,提供算力、平台、数据、模型、应用“五位一体”智算服务体系,构建全流程的AI基础设施能力
星辰TokenHub
  • 模型广场
  • 体验中心
  • 服务接入
星辰MaaS平台
  • 星辰MaaS智能体平台
  • 星辰大模型
大模型
  • glm-5.3-flash
  • GLM-5.2
  • deepseek-v4-pro-0813
  • deepseek-v4-flash-0731-new
  • qwen3.8-flash
AI Store
  • 算力市场
  • 模型市场
  • 应用市场
应用托管
  • 天翼云DramaFlow2.0
  • 应用实例
科研助手
  • 开发机
  • 并行计算
训推服务
  • 模型开发
  • 训练任务
  • 服务部署
智能体引擎
  • 智能体引擎
可信数据空间
  • 可信数据空间
公共算力服务
  • 裸金属
  • 定制裸金属
智算一体机
  • 智算一体机
模型适配专家服务
  • 模型适配专家服务
算力服务商
  • 入驻算力服务商

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入AI Store公有云生态专区智云上海应用生态专区
建站工具
  • 新域名服务
  • SSL证书
  • 翼建站
企业办公
  • 智教云电脑
  • WPS 365 天翼云版
灾备迁移
  • 云管家2.0
  • 翼备份(SaaS版)
  • 琥珀数据压缩归档服务
智慧教育
  • 智擎思政平台(个人版)
  • 智擎研学平台(个人基础版)

定价

协助您快速了解云产品计费模式、价格详情,轻松预估上云成本
价格计算器
  • 动态测算产品价格
定价策略
  • 快速了解计费模式

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
天翼云培训认证
  • 天翼云学堂
天翼信创云专区
  • 信创云专区
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
培训与认证
  • 天翼云学堂
  • 天翼云认证
开源社区
  • 魔乐社区
  • OpenTeleDB

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 服务保障
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家
我要反馈
  • 建议与反馈
  • 用户体验官
信息公告
  • 客户公告

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2026智能云生态大会
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 息壤智算
  • 产品
  • 解决方案
  • 应用商城
  • 定价
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心
      文档中心

      翼MapReduce

      翼MapReduce

      • 翼MapReduce

      无数据

        • 产品动态
        • 产品介绍
        • 产品定义
        • 版本概述
        • 产品优势
        • 功能特性
        • 多租户
        • 安全增强
        • 组件WEB UI便捷访问
        • 可靠性增强
        • 集群管理
        • 应用场景
        • 术语解释
        • 与其他产品的关系
        • 权限管理
        • 约束与限制
        • 安全
        • 责任共担
        • 身份认证与访问控制
        • 技术支持范围
        • 计费说明
        • 资源节点
        • 产品规格
        • 计费模式
        • 计费价格
        • 购买
        • 变更
        • 续订
        • 退订
        • 快速入门
        • 如何使用翼MR
        • 创建集群
        • 上传示例数据和程序
        • 添加作业
        • 从零开始使用Kerberos认证集群
        • 删除集群
        • 手动修改配置建议书
        • 组件依赖关系表
        • 用户指南
        • 准备用户
        • 创建翼MapReduce操作用户
        • LDAP用户同步
        • 配置集群
        • 创建方式简介
        • 快速创建集群
        • 创建数据湖集群
        • 创建数据分析集群
        • 创建数据服务集群
        • 创建实时数据流集群
        • 创建自定义集群
        • 管理数据连接
        • 配置元数据库
        • 管理集群
        • 登录集群
        • 翼MapReduce集群节点简介
        • 登录集群节点
        • 集群概览
        • 集群列表简介
        • 查看集群状态
        • 查看集群基本信息
        • 查看集群监控指标
        • 管理组件和主机监控
        • 资源洞察
        • 云监控服务
        • 健康检查
        • 节点管理
        • 管理节点操作
        • 配置升级
        • 节点扩容
        • 节点缩容
        • 新增节点组
        • 磁盘扩容
        • 远程连接
        • 绑定/解绑弹性IP
        • 绑定/解绑IPv6带宽
        • 组件管理
        • 对象管理简介
        • 查看配置
        • 管理服务操作
        • 集群服务管理
        • 配置服务参数
        • 同步服务配置
        • 管理角色实例操作
        • 启动及停止集群
        • 下载集群的配置数据
        • 支持滚动重启
        • 作业管理
        • 运行MapReduce作业
        • 运行SparkSubmit作业
        • 运行HiveSQL作业
        • 运行SparkSQL作业
        • 运行Flink作业
        • 运行Kafka作业
        • 运行Hue任务
        • 查看主机和组件日志
        • 告警管理
        • 查看告警列表
        • 日志与审计
        • 集群日志
        • 云日志服务
        • 云审计
        • 使用翼MR客户端
        • 下载客户端
        • 安装客户端
        • 各组件客户端使用实践
        • 使用YARN客户端
        • 使用Flink客户端
        • 使用HBase客户端
        • 使用HDFS客户端
        • 使用Hive客户端
        • 使用Kafka客户端
        • 使用Trino客户端
        • 使用ZooKeeper客户端
        • 使用Kyuubi客户端
        • 使用Spark客户端
        • 访问组件Web页面
        • 开源组件Web站点
        • 开源组件端口列表
        • 通过弹性公网IP访问
        • 翼MR Manager操作指导
        • 从这里开始
        • 翼MR Manager入门指导
        • 首页
        • 首页概述
        • 资源概览
        • 资源概览概述
        • 集群服务
        • 集群服务管理概述
        • 集群服务详情页面概述
        • 启动、停止所有集群服务
        • 启动、停止单集群服务
        • 滚动重启单个集群服务
        • 启动、停止、重启实例
        • 滚动停止、滚动重启实例
        • 实例置维护/取消维护
        • 查看集群服务配置
        • 新增配置组
        • 查看配置组详情
        • 删除配置组
        • 查看配置详情
        • 新增配置
        • 编辑配置
        • 配置项对比
        • 配置文件预览
        • 下载配置文件
        • 配置文件历史对比
        • 查看配置历史版本
        • 删除配置
        • 配置同步
        • 查看配置状态
        • 重新同步
        • 配置回滚
        • 查看运维操作历史
        • 查看告警历史
        • 查看集群服务大屏
        • 集群服务健康检查
        • 主机
        • 主机管理页面概述
        • 主机详情页面概述
        • 主机置维护、取消维护
        • 查看主机状态
        • 查看主机实例列表
        • 查看主机实例列表-实例操作
        • 查看主机告警历史
        • 主机健康检查
        • 租户与资源
        • 租户与资源概述
        • 监控与告警
        • 指标查询
        • 告警历史
        • 告警规则-告警规则概述
        • 告警规则-告警规则详情
        • 运维与配置
        • 运维历史-查看运维历史
        • 运维历史-数据展示设置
        • 流水线历史-流水线历史概述
        • 流水线历史-查看流水线运行详情
        • 配置管理-主密码设置
        • 配置管理-配置管理概述
        • 配置管理-新增配置组
        • 配置管理-查看配置组详情
        • 配置管理-删除配置组
        • 配置管理-新增配置
        • 配置管理-查看配置详情
        • 配置管理-编辑配置
        • 配置管理-配置项对比
        • 配置管理-配置文件预览
        • 配置管理-下载配置文件
        • 配置管理-配置文件历史对比
        • 配置管理-查看配置历史版本
        • 配置管理-删除配置
        • 配置管理-配置同步
        • 配置管理-查看配置状态
        • 配置管理-重新同步
        • 配置管理-配置回滚
        • 配置历史-配置历史概述
        • 配置历史-查询配置历史
        • 配置历史-查看配置详情
        • 配置历史-查看配置状态
        • 配置历史-查看配置对比
        • 配置历史-重新同步
        • 配置同步历史-配置同步历史概述
        • 配置同步历史-查看配置同步状态
        • 安全性说明
        • 安全认证原理和认证机制
        • 高危操作一览表
        • 服务配置修改建议
        • 服务基础配置修改建议
        • 多数据盘-服务配置修改建议
        • Master扩容-服务配置修改建议
        • ZooKeeper扩容
        • HDFS扩容
        • YARN扩容
        • Hive扩容
        • 自定义服务配置
        • 组件操作指南
        • OpenLDAP
        • OpenLDAP组件概述
        • OpenLDAP使用说明
        • OpenLDAP常见问题
        • OpenLDAP故障诊断
        • Kerberos
        • Kerberos组件概述
        • Kerberos安全凭证生成
        • Kerberos客户端使用
        • Kerberos常见问题
        • Kerberos故障诊断
        • ZooKeeper
        • ZooKeeper组件概述
        • ZooKeeper客户端使用
        • 配置ZooKeeper ZNode ACL
        • ZooKeeper常用配置
        • ZooKeeper性能调优
        • ZooKeeper运维管理
        • ZooKeeper最佳实践
        • ZooKeeper常见问题
        • ZooKeeper故障诊断
        • HDFS
        • HDFS组件概览
        • HDFS用户管理与认证
        • HDFS客户端使用
        • HDFS日志介绍
        • HDFS数据安全
        • HDFS权限管理
        • HDFS配额管理
        • HDFS容量规划
        • HDFS数据均衡
        • HDFS性能优化
        • HDFS常见问题
        • YARN
        • YARN组件概述
        • YARN客户端使用
        • YARN日志介绍
        • 配置NodeManager可使用资源
        • YARN队列权限管理
        • YARN性能调优
        • YARN常见问题
        • Hudi
        • Hudi组件概述
        • Hudi使用说明
        • Hive集成使用
        • Flink集成使用
        • Hudi性能调优
        • Hudi运维管理
        • Hudi常见问题
        • Iceberg
        • Iceberg组件概述
        • Iceberg客户端使用
        • Iceberg性能调优
        • Iceberg常见问题
        • HBase
        • HBase组件概述
        • HBase用户管理与认证
        • HBase客户端使用
        • HBase性能调优
        • HBase运维管理
        • HBase WebUI
        • HBase最佳实践
        • HBase常见问题
        • HBase故障诊断
        • Flink
        • Flink组件概述
        • Flink用户管理与认证
        • Flink客户端使用
        • Flink性能调优
        • Flink运维管理
        • Flink WebUI
        • Flink最佳实践
        • Flink CDC
        • Flink常见问题
        • Flink故障诊断
        • Ranger
        • Ranger基本原理
        • 登录Ranger的WebUI界面
        • Ranger权限管控
        • 启用Ranger权限管控
        • Ranger基于User的权限管控
        • Ranger基于Group的权限管控
        • Ranger基于Role的权限管控
        • Ranger管控UDF
        • Ranger数据脱敏
        • Ranger行级过滤
        • 查看Ranger审计日志信息
        • Hive
        • Hive组件概述
        • Hive客户端使用
        • HQL基本语法说明
        • Hive典型应用示例
        • Java SDK接口
        • Hive特殊功能说明
        • Hive性能调优
        • Hive运维管理
        • Hive常见问题
        • Spark
        • Spark组件概述
        • Spark客户端使用
        • Spark性能调优
        • Spark运维管理
        • Spark常见问题
        • Tez
        • Tez组件概述
        • Tez使用说明
        • Tez性能调优
        • Tez运维管理
        • Tez常见问题
        • TezUI
        • TezUI组件概述
        • TezUI访问方式
        • TezUI功能说明
        • TezUI运维管理
        • TezUI常见问题
        • Kyuubi
        • Kyuubi组件概述
        • Kyuubi客户端使用
        • Kyuubi性能调优
        • Kyuubi运维管理
        • Kyuubi常见问题
        • Amoro
        • Amoro组件概述
        • Amoro用户管理与认证
        • Amoro客户端使用
        • Amoro性能调优
        • Amoro运维管理
        • Amoro最佳实践
        • Amoro常见问题
        • Amoro故障诊断
        • 最佳实践
        • Kibana用户体验、性能优化
        • ES集群规划、性能优化
        • Kafka性能调优
        • 常见问题
        • 产品咨询类
        • 翼MR支持什么类型的分布式存储?
        • 什么是区域和可用区?
        • 翼MR是否支持更换网段?
        • 翼MR集群内节点是否支持降配操作?
        • 翼MR集群是否支持Hive on Spark?
        • 不同版本的Hive之间是否可以兼容?
        • 翼MR是否支持Hive on Tez和Hive on Kudu?
        • 翼MR集群内节点上/var/log目录中的日志文件能否清理?
        • Kafka支持的访问协议类型有哪些?
        • 翼MR产品支持Hive元数据库使用内置MySQL类型吗?
        • 是否支持修改翼MR集群中节点的IP地址?
        • 翼MR管理控制台和翼MR Manager页面区别与联系?
        • 计费类
        • 购买类
        • 操作类
        • 账号密码类
        • 账号权限类
        • 集群创建类
        • 集群管理类
        • 使用类FAQ
        • 如何查看所有集群?
        • 如何查看主机和组件日志?
        • 如何进行集群服务配置调优?
        • 大数据业务开发
        • 执行Spark任务报内存不足告警如何处理?
        • HBase表如何设置和修改数据保留期?
        • 如何查看HBase日志?
        • HBase支持的压缩算法有哪些?
        • Kafka目前支持的访问协议类型有哪些?
        • 消费Kafka Topic时报错“Not Authorized to access group XXX”如何处理?
        • 翼MR如何连接spark-shell?
        • 翼MR如何连接spark-beeline?
        • Spark job对应的执行日志保存在哪里?
        • Spark.yarn.executor.memoryOverhead设置不生效如何处理?
        • SparkSQL访问Hive分区表启动Job前耗时较长如何处理?
        • 如何获取Spark Jar包?
        • Trino如何配置其他数据源?
        • 性能优化类
        • 组件性能
        • Doris性能优化后TPC-H测试结果
        • 翼MR搜索引擎组件性能对比测试结果
        • Spark组件优化后TPC-DS测试结果
        • API参考
        • API使用说明
        • API概览
        • 如何调用API
        • 构造请求
        • 认证鉴权
        • API
        • 2023-11-02
        • 查询集群节点组详情V2
        • 创建集群
        • 根据id查询集群信息V2
        • 扩容集群
        • 集群信息分页查询V2
        • 根据集群id查询节点组信息V2
        • 退订集群
        • 元数据概览
        • 元数据信息查询
        • 视频专区
        • 相关协议
        • 翼MapReduce产品服务协议
        • 翼MapReduce产品服务等级协议
          无相关产品

          本页目录

          帮助中心 翼MapReduce 组件操作指南 Spark Spark客户端使用
          Spark客户端使用
          更新时间 2026-10-12 11:42:30
          • 新浪微博
          • 微信
            扫码分享
          • 复制链接
          最近更新时间: 2026-10-12 11:42:30
          分享文章
          • 新浪微博
          • 微信
            扫码分享
          • 复制链接
          本章节介绍如何使用Spark客户端。

          Kerberos 认证

          本集群启用了Kerberos 认证,使用 Spark 客户端前需先完成认证。管理员可以使用集群成员服务器上的 spark keytab 进行 Kerberos 认证,从而获得 Spark 集群操作权限,用户需要先进行认证才能对集群进行操作,否则会报认证失败异常。

          在命令行中输入如下命令即可完成Kerberos 认证:

          klist -kt /etc/security/keytabs/spark.keytab | awk '{print $4}' | grep -e 'spark.*@.*' | head -n 1
          kinit -kt /etc/security/keytabs/spark.keytab <principal>

          其中klist -kt 输出的第 4 列为 principal(主体名),通过 grep 过滤出 spark 用户的 principal 后用于 kinit 认证。

          认证完成后可通过klist 命令查看当前票据信息,票据过期需重新认证。

          spark-submit 提交作业

          spark-submit 是 Spark 作业的统一提交入口,可提交 Java/Scala(jar 包)、Python 脚本等应用,基本用法如下:

          spark-submit \
            --master yarn \
            --deploy-mode client \
            --class <main-class> \
            --name <application-name> \
            --queue <yarn-queue> \
            --num-executors <num> \
            --executor-memory <size> \
            --executor-cores <num> \
            --driver-memory <size> \
            --conf <key>=<value> \
            <application-jar> [application-arguments]

          主要参数说明如下表所示:

          参数说明
          --master集群管理器地址,本集群取值yarn(提交至 YARN);还支持 local(本地模式)、spark://host:port(Standalone)等
          --deploy-mode部署模式:client(Driver 运行在提交进程本地)或 cluster(Driver 运行在 YARN ApplicationMaster 中),默认 client
          --classJava/Scala 应用的主类全限定名
          --name应用名称,显示在YARN 与 Spark Web UI 中
          --queue提交至的YARN 队列
          --num-executors申请的Executor 数量
          --executor-memory单个Executor 内存,如 4g
          --executor-cores单个Executor 核数
          --driver-memoryDriver 内存,如 2g
          --conf以key=value 形式设置 Spark 配置项,可多次使用
          --jars额外依赖jar 包,多个以逗号分隔,随作业分发到各 Executor
          --py-filesPython 作业附加的 .py/.zip/.egg 依赖

          说明

          client 模式适合交互与调试,Driver 日志直接输出到提交端终端;cluster 模式适合生产作业,Driver 随 YARN 调度运行,提交端断开后作业继续运行,日志需通过 YARN 查看。

          注意

          若集群启用了Executor 动态分配(spark.dynamicAllocation.enabled=true),则 --num-executors 与 spark.executor.instances 配置会被忽略,Executor 数量由动态分配策略按负载决定,两者不要同时使用,避免配置不生效造成资源误判。

          运行示例:SparkPi

          使用Spark 自带示例程序验证集群可用性,在命令行中输入如下命令:

          spark-submit --master yarn --deploy-mode client \
            --class org.apache.spark.examples.SparkPi \
            $SPARK_HOME/examples/jars/spark-examples_2.12-3.4.1.jar 100

          执行成功后终端输出类似如下内容:

          Pi is roughly 3.1418599285819928

          可通过yarn application -list 查看 application 状态为 FINISHED:

          yarn application -list -appStates FINISHED

          spark-shell / pyspark 交互式环境

          spark-shell 提供基于 Scala 的交互式编程环境,pyspark 提供基于 Python 的交互式环境,两者均在启动时自动创建 SparkSession(变量名 spark),适合交互式探索与调试。启动命令如下:

          spark-shell --master yarn --deploy-mode client
          pyspark --master yarn --deploy-mode client

          spark-shell 中执行 WordCount 示例:

          val text = spark.read.textFile("/tmp/input.txt")
          val counts = text.flatMap(line => line.split(" ")).groupBy("value").count()
          counts.show()

          pyspark 中执行简单 SQL 示例:

          df = spark.createDataFrame([("a", 1), ("b", 2)], ["k", "v"])
          df.createOrReplaceTempView("t")
          spark.sql("select k, sum(v) from t group by k").show()

          spark-sql CLI

          Spark SQL CLI 是一个交互式命令行客户端工具,可以连接 Hive 元存储服务,并执行输入的 SQL。常用方式为通过 -e 执行单条语句或 -f 执行脚本文件:

          spark-sql -e "select count(*) from db_name.table_name"
          spark-sql -f /path/to/script.sql   # script.sql 为用户自建的SQL脚本文件

          spark-sql 的主要启动参数如下表所示(spark-sql --help 可查看完整列表,包含【options】与【cli option】两类,前者为 Spark 多客户端共用参数,后者为 Spark SQL CLI 独有参数):

          参数说明
          -e <sql>直接执行一条SQL 语句
          -f <file>执行SQL 脚本文件
          -i <file>初始化脚本,进入交互模式前执行
          --hiveconf k=v设置Hive 上下文配置项
          -d指定自定义资源目录

          不带-e 或 -f 参数时,spark-sql 进入交互式 shell 模式,以分号(;)分隔命令。输入 quit; 或 exit; 退出客户端。交互模式下的常用命令如下表所示:

          命令说明
          quit; / exit;退出客户端
          use <database>;切换数据库
          show databases; / show tables;查看库与表列表
          describe <table>;查看表结构
          set <key>=<value>;设置会话参数
          add jar <path>;添加依赖jar
          source <file>;执行脚本文件

          注意

          spark-sql 适合批量脚本与交互场景。本集群未部署 Spark ThriftServer,JDBC/Beeline 编程接入请统一使用 Kyuubi 服务(参见 Kyuubi 使用文档),通过 Beeline 连接 Kyuubi 的 JDBC 地址。

          Spark SQL 语法支持

          Spark SQL 语法分为 DDL、DML、数据检索(Data Retrieval)与辅助(Auxiliary)四类,主要语法清单如下表所示:

          类别语法
          DDL(数据定义)CREATE/DROP/ALTER DATABASE、CREATE/DROP/ALTER TABLE、CREATE/DROP/ALTER VIEW、CREATE/DROP FUNCTION、REPAIR TABLE、TRUNCATE TABLE、USE DATABASE
          DML(数据操作)INSERT TABLE、INSERT OVERWRITE DIRECTORY、LOAD DATA
          数据检索SELECT(含 Common Table Expression、JOIN、WHERE、GROUP BY、HAVING、ORDER/SORT/DISTRIBUTE/CLUSTER BY、LIMIT、Window Function、PIVOT、LATERAL VIEW、TABLESAMPLE、Hints、Set Operators)、EXPLAIN
          辅助语法ADD/LIST FILE/JAR、ANALYZE TABLE、CACHE/UNCACHE TABLE、DESCRIBE DATABASE/TABLE/FUNCTION/QUERY、REFRESH TABLE/FUNCTION、SET/RESET、SHOW DATABASES/TABLES/PARTITIONS/COLUMNS/CREATE TABLE/TBLPROPERTIES/FUNCTIONS/VIEWS

          各语法的使用细节可参考Spark 官方文档的 SQL 语法章节。

          Spark SQL 示例:企业雇员分析

          以企业雇员分析为背景构建三张表:雇员基本信息表(employees_info)、雇员通信表(employees_contact)、公司部门表(department),演示建库建表、导入数据与分析查询的完整流程。

          1、创建数据库及表:

          CREATE DATABASE IF NOT EXISTS company;
          USE company;
          
          CREATE TABLE IF NOT EXISTS employees_info
          (
            id INT COMMENT '雇员ID',
            name STRING COMMENT '雇员名称',
            gender STRING COMMENT '性别',
            dept_id INT COMMENT '部门ID',
            grade STRING COMMENT '雇员工资等级',
            salary DOUBLE COMMENT '雇员薪水',
            deduction_rate DOUBLE COMMENT '雇员税率',
            entry_date STRING COMMENT '入职日期',
            other_info STRING COMMENT '额外信息'
          )
          USING PARQUET
          COMMENT '员工信息基础表';
          
          CREATE TABLE IF NOT EXISTS employees_contact
          (
            id INT COMMENT '雇员ID',
            phone STRING COMMENT '雇员电话号',
            email STRING COMMENT '雇员email'
          )
          USING PARQUET
          COMMENT '雇员通信表';
          
          CREATE TABLE IF NOT EXISTS department
          (
            dept_id INT COMMENT '部门ID',
            dept_name STRING COMMENT '部门名称'
          );

          2、导入数据(示例数据节选):

          INSERT INTO employees_contact VALUES
            (53275, '145939987', 'oqjunox@yahoo.com'),
            (21430, '183727019', 'tmmprglpsy@gmail.com'),
            (79254, '143213819', 'nxtay@outlook.com');
          
          INSERT INTO employees_info VALUES
            (7821, 'Meryl Wilson', 'm', 1, 'M1', 120129, 0.23, '2007-4-8',
             '{"country": "china", "city": "beijing", "single": false}'),
            (9130, 'Jacob Tracie', 'f', 2, 'M2', 15305, 0.53, '2002-2-11',
             '{"country": "china", "city": "beijing", "single": false}');
          
          INSERT INTO department VALUES (1, '测试'), (2, '开发'), (3, '产品');

          3、分析查询:

          -- 查看各个部门雇员薪水的平均值
          SELECT dept.dept_name, ROUND(AVG(emp.salary), 2)
          FROM employees_info emp
          JOIN department dept ON emp.dept_id = dept.dept_id
          GROUP BY dept.dept_name;
          
          -- 查看雇员中各个号段的数量
          SELECT SUBSTRING(phone, 1, 3) AS phone_field, COUNT(phone) AS cnt
          FROM employees_contact
          GROUP BY SUBSTRING(phone, 1, 3);
          
          -- 查看雇员额外信息中包含哪些内容
          SELECT name, other_info AS info FROM employees_info;

          Scala SDK 开发

          Spark 支持 Java/Scala/Python/R 语言进行应用开发。由于 Spark 本身主要由 Scala 语言开发,且 Scala 语言简洁易懂,推荐使用 Scala 语言开发。向工程 pom 文件添加依赖(版本与本集群一致,scala 为 2.12):

          <properties>
            <spark.version>3.4.1</spark.version>
            <scala.version>2.12</scala.version>
          </properties>
          <dependencies>
            <dependency>
              <groupId>org.apache.spark</groupId>
              <artifactId>spark-core_${scala.version}</artifactId>
              <version>${spark.version}</version>
            </dependency>
            <dependency>
              <groupId>org.apache.spark</groupId>
              <artifactId>spark-sql_${scala.version}</artifactId>
              <version>${spark.version}</version>
            </dependency>
            <dependency>
              <groupId>org.apache.spark</groupId>
              <artifactId>spark-hive_${scala.version}</artifactId>
              <version>${spark.version}</version>
            </dependency>
          </dependencies>

          注意

          该处引用的Spark Jar包需要是天翼云提供的$SPARK_HOME/jars下的Jar包

          示例场景:有人员名单日志people.json,要求开发 Spark 应用实现筛选成年人(age >= 18)与统计总人数。

          people.json 为示例数据文件,集群中不存在现成文件,需自行创建:在本地开发机任一目录(如工程 resources 目录)新建文本文件,命名为 people.json,将下面代码块中的 4 行内容原样复制进去保存即可(JSON Lines 格式,每行一个 JSON 对象,UTF-8 编码):

          {"name":"Alice", "age":10}
          {"name":"Jessica", "age":23}
          {"name":"Albert", "age":16}
          {"name":"Anna", "age":55}

          本地调试时,将该文件放到工程src/main/resources/ 目录下(代码中读取路径 src/main/resources/people.json 即对应此位置);集群运行时按"集群运行完整步骤"上传到 HDFS。

          新建object 文件 SparkSQLExample:

          package spark_sql_demo
          
          import org.apache.spark.SparkConf
          import org.apache.spark.sql.SparkSession
          
          object SparkSQLExample {
            case class Person(name: String, age: Long)
          
            def main(args: Array[String]): Unit = {
              val sparkConf = new SparkConf()
              val spark = SparkSession
                .builder()
                .appName("Spark SQL basic example")
                .config(sparkConf)
                .getOrCreate()
              runExample(spark)
              spark.stop()
            }
          
            private def runExample(spark: SparkSession): Unit = {
              val df = spark.read.json("src/main/resources/people.json")
              df.show()
          
              import spark.implicits._
              df.filter($"age" >= 18).show()   // 筛选成年人
          
              df.createOrReplaceTempView("people")
              spark.sql("SELECT count(*) FROM people").show()  // 统计总人数
            }
          }

          集群运行完整步骤(从零开始):

          1、将上文的 4 行人员数据保存为本地文件 people.json;

          2、上传到 HDFS(用户目录下,命令会自动创建 /user/<用户名>/people.json):

          hdfs dfs -put people.json /user/<用户名>/  # 或简化为: hdfs dfs -put people.json people.json

          3、修改代码中的读取路径为 HDFS 路径:

          val df = spark.read.json("hdfs:///user/<用户名>/people.json")

          4、maven 打包获得 spark_sql_demo-1.0-SNAPSHOT.jar,通过 spark-submit 运行:

          spark-submit --class spark_sql_demo.SparkSQLExample \
          spark_sql_demo-1.0-SNAPSHOT.jar

          注意

          示例代码中读取路径src/main/resources/people.json 为本地开发路径,仅在 local 模式调试时有效。集群(yarn)模式下 Executor 节点访问不到提交机的本地文件,必须先按上述步骤将文件上传至 HDFS 并改为 HDFS 路径读取。

          配置说明

          Spark 的服务端与客户端配置文件位于 $SPARK_HOME/conf 目录下,主要配置文件说明如下表所示:

          配置文件说明
          spark-defaults.confSpark 参数默认值文件,每行 key=value,提交作业时自动加载,可被 --conf 覆盖
          spark-env.sh环境变量脚本,设置SPARK_CONF_DIR、YARN_CONF_DIR、SPARK_EXECUTOR_MEMORY、SPARK_DRIVER_MEMORY 等环境变量
          log4j2.propertiesSpark 进程日志配置

          常用配置参数及其默认值如下表所示(取自Spark 3.4.1 源码默认配置):

          参数默认值说明
          spark.masterlocal[*]集群管理器,本集群固定为yarn
          spark.driver.memory1gDriver 进程内存
          spark.executor.memory1g单个Executor 内存
          spark.executor.cores1单个Executor 核数
          spark.executor.instances无(动态分配)Executor 数量
          spark.default.parallelism所有核心总数RDD 算子(如 reduceByKey)默认分区数
          spark.sql.shuffle.partitions200Spark SQL Join/聚合 Shuffle 默认分区数
          spark.memory.fraction0.6执行与存储统一内存占堆内存的比例,其余为用户内存与预留
          spark.serializerorg.apache.spark.serializer.JavaSerializer序列化器,shuffle 数据量大时建议使用 KryoSerializer
          spark.eventLog.enabledfalse是否记录事件日志(本集群建议开启用于排障)
          spark.eventLog.dirfile:/tmp/spark-events事件日志目录,生产环境建议配置为HDFS 路径
          spark.sql.adaptive.enabledtrueAQE 自适应查询执行开关(3.4 默认开启)
          spark.sql.adaptive.skewJoin.enabledtrueAQE 倾斜 Join 自动优化开关
          spark.shuffle.file.buffer32kShuffle 写缓冲区大小
          spark.reducer.maxSizeInFlight48mReduce 端单次拉取 map 输出的大小上限
          spark.ui.port4040应用Web UI 端口,被占用时自动递增
          spark.history.ui.port18080History Server Web UI 端口
          文档反馈

          建议您登录后反馈,可在建议与反馈里查看问题处理进度

          鼠标选中文档,精准反馈问题

          选中存在疑惑的内容,即可快速反馈问题,我们会跟进处理

          知道了

          上一篇 :  Spark组件概述
          下一篇 :  Spark性能调优
          搜索 关闭
          ©2026 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
          公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
          备案 京公网安备11010802043424号 京ICP备 2021034386号
          ©2026天翼云科技有限公司版权所有
          京ICP备 2021034386号
          备案 京公网安备11010802043424号
          增值电信业务经营许可证A2.B1.B2-20090001
          用户协议 隐私政策 法律声明