Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >大型数据仓库上的Pyspark

大型数据仓库上的Pyspark
EN

Stack Overflow用户
提问于 2020-08-26 23:50:06
回答 2查看 1.8K关注 0票数 0

我们有一个非常大的,我们需要在它上执行一个groupBy操作。

我们试过了

代码语言:javascript
运行
AI代码解释
复制
df_gp=df.groupBy('some_column').count()

它花了很长时间(它已经运行了超过17小时,但没有结果)。

我也试过

代码语言:javascript
运行
AI代码解释
复制
df_gp=df.groupBy('some_column').agg(count)

但据我所知,这种行为是一样的。

关于更多情况:

我们正在Zeppelin上运行此操作(Version0.8.0),使用%Spark2。interpreter

  • Zeppelin运行在3.1.0.3.1.0.0-78)

  • Initial客户端,

  • 数据存储在Hive上(Hive 3.1.0.3.1.0.0-78)

  • Initial Dataframe是通过使用llap :

查询Hive创建的)。

代码语言:javascript
运行
AI代码解释
复制
from pyspark_llap import HiveWarehouseSession
hive = HiveWarehouseSession.session(spark).build()

req=""" SELECT *
        FROM table
        where isodate='2020-07-27'
    """

df = hive.executeQuery(req)

  • Dataframe大小为6千万行,在相同环境下执行的9次操作(如count()cache()在分钟以下)。

我在不同的来源上读过关于Spark的groupBy的文章,但是根据我收集到的here,Dataframes不需要在内存中加载或洗牌键,所以即使在大型数据仓库中,它也不会是一个问题。

我知道,在这么大的数据量上使用groupBy可能需要一些时间,但这实在是太过分了。我想有些内存参数可能需要调优,或者我们执行groupBy操作的方式有问题吗?

编辑--我忘了--在groupBy之前,在Dataframe上有一些UDF正在处理。我试过:

在大型Dataframe上的

  • groupBy,没有UDFs :给出的结果在处理的数据same的样本上小于minute
  • groupBy:与以前的

相同

所以我们认为UDF是问题的真正原因,而不是groupBy

EN

回答 2

Stack Overflow用户

发布于 2020-08-27 05:10:04

几个神话先爆发

  1. .groupBy('some_column').count().groupBy('some_column').count()是相同的

  1. groupBy引起洗牌,这篇文章的意思是它只对必要的列数据进行洗牌(没有在groupBy或agg函数中使用的额外列)。

我在不同的来源上读过关于Spark的groupBy的文章,但是从我在这里收集的资料来看,Dataframes不需要在内存中加载或洗牌键,所以即使在大型Dataframes上,它也不会成为一个问题。

现在来谈谈你的问题

如果更多的数据被重新洗牌,spark.sql.shuffle.partitions设置为低(200个默认值),那么spark.sql.shuffle.partitions可能需要时间。在这种情况下,1核心将有大量的杂乱数据来聚合

  • ,如果groupBy中使用的列有数据倾斜,也可能需要很长时间,因为它将导致大量数据转到单个执行器核心

解决方案

aggregate

  • skew

票数 1
EN

Stack Overflow用户

发布于 2020-08-27 00:24:42

由于底层的Hive查询,而不是由于groupBy操作,它可能运行缓慢。正如您可能知道的那样,星星之火可以进行懒惰的评估,因此延迟可能来自上述任何一个。测试它的一种方法是对数据文件进行cache()或在对其执行groupBy之前调用一个简单的groupBy。如果您看到同样的问题,这是因为蜂巢查询的执行,解决方案将在那里看起来不同。您还可以尝试从文件中读取数据,并查看在执行groupBy时是否注意到相同的执行时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63611463

复制
相关文章
在PySpark上使用XGBoost
我这里提供一个pyspark的版本,参考了大家公开的版本。同时因为官网没有查看特征重要性的方法,所以自己写了一个方法。本方法没有保存模型,相信大家应该会。
Sam Gor
2021/04/26
5.2K1
用PySpark开发时的调优思路(上)
这一小节的内容算是对pyspark入门的一个ending了,全文主要是参考学习了美团Spark性能优化指南的基础篇和高级篇内容,主体脉络和这两篇文章是一样的,只不过是基于自己学习后的理解进行了一次总结复盘,而原文中主要是用Java来举例的,我这边主要用pyspark来举例。文章主要会从4个方面(或者说4个思路)来优化我们的Spark任务,主要就是下面的图片所示:(本小节只写了开发习惯调优哈)
Sam Gor
2021/06/25
1.6K0
用PySpark开发时的调优思路(上)
大型网站架构体系的演变(上)
互联网上有很多关于网站架构的各种分享,有些主要是从运维和基础架构的角度去分析的(堆机器,做集群),太关注技术细节实现,普通的开发人员基本看不太懂。
哲洛不闹
2018/09/19
3980
大型网站架构体系的演变(上)
PySpark|从Spark到PySpark
简单的说Apache Spark是一个开源的、强大的分布式查询和处理引擎,它提供MapReduce的灵活性和可扩展性,但速度明显要快上很多;拿数据存储在内存中的时候来说,它比Apache Hadoop 快100倍,访问磁盘时也要快上10倍。
数据山谷
2020/11/06
3.5K1
PySpark入门级学习教程,框架思维(上)
为什么要学习Spark?作为数据从业者多年,个人觉得Spark已经越来越走进我们的日常工作了,无论是使用哪种编程语言,Python、Scala还是Java,都会或多或少接触到Spark,它可以让我们能够用到集群的力量,可以对BigData进行高效操作,实现很多之前由于计算资源而无法轻易实现的东西。网上有很多关于Spark的好处,这里就不做过多的赘述,我们直接进入这篇文章的正文!
Sam Gor
2021/04/26
1.7K0
PySpark入门级学习教程,框架思维(上)
pyspark
print("pyspark version"+str(sc.version)) map
Tim在路上
2020/08/05
1K0
Effective PySpark(PySpark 常见问题)
首先确保安装了python 2.7 ,强烈建议你使用Virtualenv方便python环境的管理。之后通过pip 安装pyspark
用户2936994
2018/08/27
2.2K0
pySpark | pySpark.Dataframe使用的坑 与 经历
笔者最近在尝试使用PySpark,发现pyspark.dataframe跟pandas很像,但是数据操作的功能并不强大。由于,pyspark环境非自建,别家工程师也不让改,导致本来想pyspark环境跑一个随机森林,用 《Comprehensive Introduction to Apache Spark, RDDs & Dataframes (using PySpark) 》中的案例,也总是报错…把一些问题进行记录。
悟乙己
2019/05/26
8.2K0
PySpark 的背后原理
本文介绍了 PySpark 的背后原理,包括其运行时架构、Driver 端和 Executor 端的运行原理,并分析了在大数据场景下使用 PySpark 的利弊。
涂小刚
2017/07/06
7.5K6
PySpark 的背后原理
PySpark︱pyspark.ml 相关模型实践
官方案例来源:https://spark.apache.org/docs/latest/api/python/pyspark.ml.html#pyspark.ml.classification.MultilayerPerceptronClassifier
悟乙己
2020/03/27
2K0
【Python】PySpark 数据处理 ② ( 安装 PySpark | PySpark 数据处理步骤 | 构建 PySpark 执行环境入口对象 )
命令 , 安装 PySpark , 安装过程中 , 需要下载 310 M 的安装包 , 耐心等待 ;
韩曙亮
2023/10/11
5330
【Python】PySpark 数据处理 ② ( 安装 PySpark | PySpark 数据处理步骤 | 构建 PySpark 执行环境入口对象 )
pyspark记录
1.1 spark.read.json() / spark.read.parquet() 或者 spark.read.load(path,format=”parquet/json”)
DuncanZhou
2018/09/04
1.3K0
【译文】MapReduce:大型集群上的简化数据处理
MapReduce是一个编程模型,以及处理和生成大型数据集的一个相关实现,它适合各种各样的现实任务。用户指定计算的map和reduce函数。底层运行系统自动地将大规模集群机器间的计算并行化,处理机器故障,以及调度机器间通信以充分利用网络和磁盘。程序员会发现这个系统很好使用:在过去的去年中,超过一万个不同的MapReduce程序已经在Google内部实现,平均每天有十万个MapReuce作业在Google集群上被执行,每天总共处理20PB以上的数据。
Gaussic
2018/08/17
8010
【译文】MapReduce:大型集群上的简化数据处理
pyspark on hpc
本地内部集群资源有限,简单的数据处理跑了3天。HPC上有很多计算资源,出于先吃锅里的再吃碗里的思想,琢磨先充分利用共有资源。简单调研下,也不是很复杂的事情。
flavorfan
2021/12/10
1.7K0
pyspark on hpc
PySpark简介
Apache Spark是一个大数据处理引擎,与MapReduce相比具有多个优势。通过删除Hadoop中的大部分样板代码,Spark提供了更大的简单性。此外,由于Spark处理内存中的大多数操作,因此它通常比MapReduce更快,在每次操作之后将数据写入磁盘。
双愚
2018/08/30
7.1K0
pyspark记录
1.1 spark.read.json() / spark.read.parquet() 或者 spark.read.load(path,format=”parquet/json”)
DuncanZhou
2020/01/21
9930
pyspark之从HDFS上读取文件、从本地读取文件
hdfs上的路径: path="hdfs:///主机名:端口号/地址" 本地上的路径: path"file:///本地地址" 读取文件: rdd=sc.textFile(path)
西西嘛呦
2020/08/26
5.3K0
速读原著-Gradle 在大型 Java 项目上的应用
在 Java 构建工具的世界里,先有了 Ant,然后有了 Maven。Maven 的 CoC[1]、依赖管理以及项目构建规则重用性等特点,让 Maven 几乎成为 Java 构建工具的事实标准。然而,冗余的依赖管理配置、复杂并且难以扩展的构建生命周期,都成为使用 Maven 的困扰。
cwl_java
2020/02/14
2.1K0
Python大数据之PySpark(二)PySpark安装
spark-submit 提交圆周率的计算代码 */examples/src/main/python/pi.py*
Maynor
2023/09/28
3K0
Python大数据之PySpark(二)PySpark安装
python中的pyspark入门
PySpark是Python和Apache Spark的结合,是一种用于大数据处理的强大工具。它提供了使用Python编写大规模数据处理和分析代码的便利性和高效性。本篇博客将向您介绍PySpark的基本概念以及如何入门使用它。
大盘鸡拌面
2023/10/21
7890

相似问题

PySpark/Delta数据仓库的高效执行

12

加载大型数据仓库表的更快方法

42

无法使用大型字典的Pyspark

10

如何在pySpark数据仓库中添加行id

116

大型数据帧( pyspark)上的EMR笔记本会话在数秒内超时(使用pyspark)

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档