spark sql+hive ETL

spark 任务优化 1.过滤掉不符合预期的热点key,例如由于日志信息丢失导致某个字段产生大量空值 2.加入随机因素,打散热点key 3.使用map join解决小表关联大表造成的数据倾斜问题大量的小文件会影响Hadoop集群管理或者Spark在处理数据时的稳定性:spark.sql.parquet.enableVectorizedReader=true– 小文件合并的阈值 set spark.sql.mergeSmallFileSize=268435456; – 小文件合并的task中,每个task读取的数据量 set sp 阅读详情

spark-sql 缺点:执行语句insert overwrite table xx…在结果目录会有大量小文件,容易内存溢出执行失败

Spark sql +hive

create table if not exists db.res(sum_id string,cnt_id string,dis_id string,cnt_uid string,dis_uid string) partitioned by (dt string comment '分区日期 yyyy-MM-dd') stored as orcfile;
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
insert overwrite table db.res partition(dt) select sum(id) as sum_id,count(id) cnt_id,count(distinct id) as dis_id,count(user_id) cnt_uid,count(distinct user_id) dis_uid,split(event_date,' ')[0] dt from db.test where user_id is not null and event_date is not null group by split(event_date,' ')[0];


spark sql+shell脚本:

#!/bin/bash
table_name=$1
row_limit=$2
#seconds from 1970-01-01
date_seconds=`date +%s`
echo $date_seconds
sh_table_date=`expr $date_seconds / 86400`
echo $sh_table_date
#Statment_create
#creat_sql="select * from ${sh_table_name} limit ${sh_row_limit};"
#echo "${creat_sql}"
conf="--master yarn-client --name spark-sh03 --queue q1 --num-executors 3 --executor-cores 2 --executor-memory 2g"
$SPARK_HOME/bin/spark-sql ${conf} -f /home/t.sql

#!/bin/bash
sh_database=$1
sh_table_name=$2
sh_row_limit=$3
#seconds from 1970-01-01
date_seconds=`date +%s`
echo $date_seconds
sh_table_date=`expr $date_seconds / 86400`
echo $sh_table_date
#Statment_create
creat_sql="select * from ${sh_table_name} limit ${sh_row_limit};"
echo "${creat_sql}"
conf="--master yarn --deploy-mode client --name spark_sh01 --queue q1 --num-executors 3 --executor-cores 2 --executor-memory 2g"
$SPARK_HOME/bin/spark-sql ${conf} -e "${creat_sql}"

[aa@hd12 ~]$ vim test2.sql
sh_table_name=$2
sh_row_limit=$3
#seconds from 1970-01-01
date_seconds=`date +%s`
echo $date_seconds
sh_table_date=`expr $date_seconds / 86400`
echo $sh_table_date
#Statment_create
create_table="create table if not exists db.res(sum_id string,cnt_id string,dis_id string,cnt_uid string,dis_uid string) partitioned by (dt string comment '分区日期 yyyy-MM-dd') stored as orcfile"

#create_table="create table if not exists db.res(sum_id string,cnt_id string,dis_id string,cnt_uid string,dis_uid string) partitioned by (dt string comment '分区日期 yyyy-MM-dd') row format delimited fields terminated by ',' lines terminated by '\n' stored as orcfile;"

#creat_sql="select * from ${sh_table_name} limit ${sh_row_limit};"
insert_sql="set hive.exec.dynamic.partition=true;set hive.exec.dynamic.partition.mode=nonstrict;insert overwrite table db.res partition(dt) select sum(id) as sum_id,count(id) cnt_id,count(distinct id) as dis_id,count(user_id) cnt_uid,count(distinct user_id) dis_uid,split(event_date,' ')[0] dt from db.test where user_id is not null and event_date is not null group by split(event_date,' ')[0]"
echo "${creat_sql}"
conf="--master yarn --deploy-mode client --name spark_sh02 --queue q1 --num-executors 3 --executor-cores 2 --executor-memory 2g"
$SPARK_HOME/bin/spark-sql ${conf} -e "${create_table};${insert_sql}"


spark sql:
./beeline

!connect jdbc:hive2://hadoop01.com:2181,hadoop02.com:2181,hadoop03.com:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2

spark on hive beeline客户端测试:
[test@hd12 bin]$ ./beeline -u jdbc:hive2://hadoop01.com:10000 -n tom
Connecting to jdbc:hive2://hd11.yyuap.com:10000

spark-sql :

spark-sql --master yarn --deploy-mode client  --executor-memory 4g --executor-cores 2 --num-executors 5 --name tom_spark-sql --queue etl_q

set hive.exec.orc.split.strategy=ETL;


复杂聚合:
select  split(event_date,' ')[0]  dt,
sum(id),count(id),count(distinct id),count(user_id),count(distinct user_id)
from test
where user_id is not null
and event_date is not null
group by split(event_date,' ')[0];


select  ‘20200202’  dt,
sum(id),count(id),count(distinct id),count(user_id),count(distinct user_id)
from test
where user_id is not null
and event_date is not null


cube:
select grouping__id,split(event_date,' ')[0]  dt,target,action,sum(id) as sum_id,count(id) cnt_id,
count(distinct id) as dis_id,count(user_id) cnt_uid,
count(distinct user_id) dis_uid 
from test 
where user_id is not null and event_date is not null 
group by split(event_date,' ')[0],target,action 
with cube;


视图:
create view if not exists res_view as
select grouping__id as set_id,rpad(reverse(bin(cast(GROUPING__ID AS bigint))),3,'0'),split(event_date,' ')[0],target,action,sum(id) as sum_id,count(id) cnt_id,count(distinct id) as dis_id,count(user_id)
 cnt_uid,count(distinct user_id) dis_uid 
from test 
where user_id is not null and event_date is not null 
group by split(event_date,' ')[0],target,action
with cube 
order by set_id;

spark job配置参数优化:

spark.akka.frameSize=200
spark.akka.timeout=100
spark.shuffle.manager=SORT
spark.scheduler.mode=FAIR
#spark.scheduler.allocation.file
spark.default.parallelism=200
spark.storage.memoryFraction=0.6
spark.executor.instances=40
spark.streaming.unpersist=true
spark.io.compression.codec=snappy
spark.driver.extraJavaOptions=-XX:+UseG1GC
spark.executor.extraJavaOptions=-XX:+UseG1GC
spark.serializer=org.apache.spark.serializer.KryoSerializer
spark.streaming.backpressure.enabled=true
spark.streaming.kafka.maxRatePerPartition=500
spark.streaming.backpressure.initialRate=1000
spark.streaming.kafka.maxRetries=3
spark.streaming.concurrentJobs=1
spark.yarn.executor.memoryOverhead=2048
spark.yarn.driver.memoryOverhead=1024
spark.rdd.compress=true
spark.speculation=false
spark.speculation.interval=100
spark.speculation.quantile=0.75
spark.speculation.multiplier=1.5
spark.scheduler.executorTaskBlacklistTime=30000
spark.streaming.stopGracefullyOnShutdown=true

hive.exec.orc.default.stripe.size相关 1)因此在适当增大hive.exec.orc.default.stripe.size, "256*1024*1024"的值可提高效率,就像适当提高blocksize也可以加快效率原理类似.也就是对应的default设置值:hive.exec.orc.default.stripe.size, "256*1024*1024 " stripe的默认大小。适当加大hive.exec.orc.default.stripe.size配置,以及在orc表比较大的情况下使用BI策略可有效提高效率, 阅读详情

相关推荐

orc split generation failed with exception:null

原因: 在读取hdfs上的文件时遇到了空文件导致报错。 解决办法: 添加一个配置 hive.exec.orc.split.strategy=ETL 即可!

lukabruce的博客 3580

大数据开发之Hive优化篇5-使用ORC文件格式优化Hive

备注: Hive 版本 2.1.1 文章目录一.ORC文件格式概述二.测试ORC性能2.1 查看两个表存储空间的大小2.2 测试查询性能三.ORC相关参数参考 如果使用Hive作为大数据仓库,强烈建议主要使用ORC文件格式作为表的存储格式 一.ORC文件格式概述 ORC (Optimized Row Columnar)文件格式为Hive数据提供了一种高效的存储方式。它的设计是为了克服其他Hive文件格式的限制。使用ORC文件可以提高Hive读写和处理数据时的性能。 例如,与RCFile格式相比,ORC文件格

只是甲的博客 3342

案例_Spark SQL实现数据ETL到Hive ODS

演示如何通过Spark SQL实现ETL任务,将数据分别从文件或MySQL中抽取到Hive数据仓库的ODS层叠 (数据贴源层)中。

1532

SparkSQL读取ORC表时遇到空文件

先看一段报错日志: ERROR ApplicationMaster: User class threw exception: java.lang.RuntimeException: serious problem java.lang.RuntimeException: serious problem at org.apache.hadoop.hive.ql.io.orc.OrcInputFormat.generateSplitsInfo(OrcInputFormat.java:1021) at or

weixin_45240507的博客 2980

数仓工具—Hive初识(1)

Hive数据仓库软件提供了通过SQL 对存储在分布式中的大型数据集的查询和管理,它本身是建立在Apache Hadoop之上,主要提供以下功能

4万+

基于Spark+Hive的交通智能研判系统:离线批处理与OD溯源实战

在智能交通和大数据平台建设中,离线批处理仍是挖掘历史数据价值的主要方式。Spark SQL与Hive通过共享元数据实现计算和存储的协同,能够高效完成海量过车数据的清洗、分层聚合与指标计算。基于这一技术栈构建交通智能研判系统,可支持区域拥堵演变、常发堵点排名、OD溯源等核心业务场景。内容从数据仓库分层、分区策略、ETL实践到OD溯源与拥堵识别实现,系统阐述了Spark+Hive在交通研判中的落地方法,并梳理了动态分区、数据倾斜、时区设置等常见问题,为研发与运维团队提供一套可复用的工程化方案。

weixin_29045001的博客 269

Spark SQL 浅学笔记1

工作学习笔记 首先复习了一下 Spark 简介 Spark是什么 Spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。 Spark and Hadoop(Mapleduce ) Hadoop的 Mapleduce 已经是不错的计算框架了,为什么还要学习新的计算框架Spark呢? 首先明确 Spark 与 Hadoop中的MapReduce 是完全不同的计算引擎。两者各自存在的目的不尽相同。 Hadoop是由java语言编写的,包括HDFS分布式数据存储功能,还有MapRecue的数据计.

积一时之步,臻千里之遥程 363

基于Spark与Hive的酒店大数据分析系统设计与实现

在数据量激增的背景下,离线数据分析已成为企业洞察业务的关键技术。Spark作为分布式计算引擎,能够高效处理大规模数据集;Hive则提供数据仓库的存储与SQL查询能力,二者结合构成了典型的大数据离线分析架构。本文以酒店数据为切入点,详细阐述从爬虫采集、ETL清洗、Hive建表、Spark SQL聚合分析到MySQL存储及Django可视化的完整数据链路。通过实际案例展示如何利用Spark SQL进行城市价格、评分分布等维度统计,并借助ECharts实现结果的可视化展示。文章还讨论了小文件合并、中文乱码等工程实

weixin_28689193的博客 89

Spark SQL

非结构化数据与结构化数据 Spark SQL是spark用来处理结构化数据的Apache Spark组件 : 与最基本的Spark API——RDD API不同的是Spark SQL接口提供了更多关于数据结构和正在执行的计算的相关信息 在Spark内部,Spark可以使用这些信息来对运算进行额外的优化 Spark SQL的特点 : 1.Spark SQL使用的数据来源 Spark SQL可以使用...

ghf183184的博客 350

SAP WM模块配置详解

1.给工厂/存储地点分配仓库编码 功能说明 配置路径 IMG>企业结构>分配>分配后勤执行>给工厂/存储地点分配仓库编码 业务示例 配置步骤 2.定义仓库号码控制参数 功能说明 配置路径 IMG>后勤执行>仓库管理>主数据>主数据>定义仓库号码控制参数 业务示例 配置步骤 3.定义编码范围 功能说明 配置路径 IMG>后勤执行>仓库...

weixin_40672823的博客 2万+

进阶数据结构——链式前向星

链式前向星是一种进阶的数据结构,主要用于图的存储。我希望大家先看这个视频(蓝色字体点进去) 不然你很难理解的。在图论中,图的存储方式主要有邻接矩阵和邻接表两种。邻接矩阵虽然建图简单方便,但占内存较大,节点数量稍微大点的题目就难以使用(适合稠密图);而邻接表虽然节省空间,但其指针形式难写易错,且vector形式的读取速度较慢,易导致大数据下的超时(TLE)。针对上述问题,链式前向星作为一种折中的方式应运而生。链式前向星本质上是一种静态链表,它将数据以链表形式连接在一起。

ycs66的博客 2138

Trino在大数据生态中的终极定位:如何与Spark、Hive协同工作提升数据分析效率

在大数据技术快速发展的今天,Trino作为一款高性能的分布式SQL查询引擎,正在重新定义数据分析的工作方式。Trino不仅能够快速查询海量数据,更重要的是它能够与Spark、Hive等主流大数据工具无缝协同工作,为企业和开发者提供更高效的数据分析解决方案。 ## Trino在大数据生态中的核心定位 Trino在大数据生态中扮演着**查询加速引擎**的关键角色。它专门为**交互式查询**而设计,

gitblog_00581的博客 436

A Super-Resolution Imaging Method for Forward-Looking Scanning Radar Based on Improved TV论文阅读

具体而言,作者提出了一种改进的总变差(Improved Total Variation, ITV)方法,通过引入。论文旨在解决前视扫描雷达(Forward-Looking Scanning Radar)超分辨率成像中传统。(Batch Processing),以增强图像边缘特征的保留能力,并提升计算效率。论文的核心创新点在于对传统TV正则化的邻域梯度计算进行扩展,提出。ITV剖面(图3d)在噪声下仍保持矩形边缘,仅存。​(公式10):实现稀疏约束。),抑制远端单元贡献。(幅度远低于目标)。

yangqoor的博客 1240

Hive SQL和Spark SQL的区别?

但是,对于实时插入、更新、删除数据,还要求强一致性和毫秒级响应,这个就不是Hive的长处,因为MapReduce。的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将。上的数据仓库基础构架。过程串起来,中间过程存在内存中,再做一些优化,官方给出的答案是比Hadoop。每支持一种新的应用开发,都会引入一个新的Context。处理数据是一个个阶段进行的,每个阶段都要落盘,不能多个。的一个数据仓库工具,同时也是查询引擎,基于。应用,十分适合数据仓库的统计分析。

weixin_41870061的博客 1427

从采集到播放:RV1106+H264全链路开发避坑指南(含FFmpeg转码技巧)

本文详细解析了基于Rockchip RV1106芯片构建H.264视频从采集到播放全链路的开发实践。内容涵盖RKMPI框架设计、VI/VENC模块配置、内存泄漏排查及FFmpeg高效转码技巧,旨在帮助嵌入式开发者规避常见陷阱,实现稳定高效的低延迟视频处理流水线。

weixin_29189377的博客 662

新手必看!无人机定高PID调参避坑指南:从理论到实战的完整流程

本文为无人机新手提供定高PID调参的完整指南,从传感器融合到抗风策略,详细解析多传感器融合、PID控制参数调试及环境干扰应对。通过实战案例和代码示例,帮助开发者快速掌握无人机定高技术,避免常见调参陷阱,提升飞行稳定性。

spark7igniter的博客 222

Spark读取hive表元数据异常

在ETL接入数据时,需要对表新增字段,因为表的特殊性质,存在实时接入更新三个月历史数据的情况,故该表的小文件很多,在通过hive增加字段的时候,spark没有立即生效,导致用hive命令修改元数据后, hive表的元数据信息和spark-SQL的schema不一致。考虑到之前执行refresh的时候有进行小文件合并,中间有杀掉小文件合并进程,有可能是影响了refresh,故再进行了小文件合并后又重新执行了refresh,才成功了,且最后一个是通过spark shell执行的。命令用于刷新表的元数据。

shuijing55hi的博客 1306

【2025年华为秋招(AI)-11月19日-第二题(200分)- 终端款型聚类识别】(题目+思路+Java&C++&Python解析+在线测试)

该摘要总结了题目要求、输入输出格式、KMeans算法的实现步骤以及关键点。以下是150字内的摘要: 本文提出基于KMeans算法对终端型号进行聚类的方法。通过包间隔时长、连接持续时长、漫游前后信号强度4个特征,使用欧氏距离度量相似度。算法采用固定初始化策略(前k个样本作为初始质心),经过分配-更新迭代,直至质心移动小于1e-8或达到最大迭代次数。最终输出各簇样本数并按升序排列,解决了终端型号自动分类问题。示例显示该方法能有效识别3-4类终端,并准确统计每类数量。

m0_73659489的博客 141

[Hadoop] Spark SQL

Spark SQL Spark SQL is Apache Spark's module for working with structured data. 由于Hive太慢而产生的一系列SQL on Hadoop框架: Hive:优点上手快,缺点运行速度太慢 Impala Presto:国内有京东在使用 Shark:把hive跑在spark之上 Drill HAWQ Phoen...

Cindy的博客 816

2025.05.29【Network】多组学分析:网络互作图绘制

本文介绍了使用R语言进行网络图绘制的方法与技巧。重点讲解了三个核心R包的使用:igraph用于网络图数据准备与基础绘制,ggraph基于图形语法实现高级可视化,networkD3则为网络图添加交互功能。文章涵盖了从基本概念、包安装、创建网络图对象,到自定义样式布局、添加交互性等完整流程,并提供了度分布、聚类系数等网络分析指标的计算方法。通过清晰的代码示例,帮助读者掌握生物信息学数据可视化的关键技能,为复杂数据的直观展示和分析提供实用工具。

227

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Spark SQL核心解析:大数据时代的结构化处理利器

逻辑计划生成后,Catalyst优化器会对其进行一系列的优化,包括谓词下推(将过滤条件尽可能下推到数据源读取阶段,减少数据扫描量)、列裁剪(只选取查询中需要的列,减少数据传输和处理开销)、常量折叠(在编译时计算常量表达式的值)等。逻辑计划描述了查询的逻辑操作,如过滤、投影、连接等,但不涉及具体的执行细节。Spark SQL提供了丰富的数据转换和处理函数,可以方便地对数据进行清洗(如去除重复数据、填充缺失值)、转换(如数据类型转换、特征提取)等操作,为后续的数据分析和建模提供高质量的数据。

2501_90679485的博客 1015

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Hive简介

文章目录hive简介hive的特点 hive简介     Hive是一个数据仓库基础工具在Hadoop中用来处理结构化数据。它架构在Hadoop之上,总归为大数据,并使得查询和分析方便。并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。     最初,Hive是由Facebook开发,后来由Apache软件基金会开发,并作为进一步将它作为名义下Apache Hive为一个开源项目。Hive 没有专门的数据格式。 Hive 可以很好的工作在 Thrift 之上,控制分隔符,也

weixin_38011805的博客 528

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

spark小文件合并解决多级分区

package spark10.access import java.text.SimpleDateFormatimport java.util.Date import org.apache.hadoop.fs.{FileSystem, Path}import org.apache.log4j.Loggerimport org.apache.spark.sql.hive.HiveContext...

weixin_30399055的博客 475

Hadoop+Spark+Hive智慧交通客流量预测系统毕业设计全流程解析

大数据技术栈中,Hadoop、Spark与Hive构成了离线数据处理的核心链路,广泛应用于智慧交通、用户行为分析等场景。Hadoop提供分布式存储与资源调度,Hive负责数据仓库建模与SQL分析,Spark则承担高速计算与机器学习任务。三者协同,能够完成从数据采集、ETL清洗、特征工程到模型训练与预测的完整闭环。在智慧交通领域,基于历史客流数据预测未来时段站点客流量,是典型的大数据工程实践,也是毕业设计的高频选题。本文从环境搭建、数据预处理、Hive数仓分层、Spark MLlib建模到性能调优与答辩展示,

weixin_30952479的博客 64

数据仓库Hive

什么是hive hive是建立在hadoop上的数据仓库基础构架。提供了一系列的工具,可以用来数据的提取转化加载(ETL) Hive定义了简单的类sql语言,允许熟悉sql的用户直接查询hadoop中的数据,同时,这个语言也允许熟悉MapReduce的开发者开发自定义函数来完成sql函数无法完成的复杂分析任务 Hive中包含解析sql的引擎,它将sql语句转译成MR job 然后在hadoop中执行 hive的系统架构 用户接口:CLI,JDBC/ODBC,WebUI 元数据存储(MetaStore):m

SONGZ的博客 683
上一篇: Superset部署与集成kylin
下一篇: hive json数据处理
那年夏天110
博客等级 码龄16年 2粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值