
Spark
文章平均质量分 80
Spark
三 丰
Everything will be okay in the end. If it's not okay, it's not the end.
展开
-
BroadcastNestedLoopJoin和禁不掉的广播
先来看一个普通的Left Joinimport org.apache.spark.sql.SparkSessionimport org.apache.spark.sql.functions.broadcastcase class People(id: Int, name: String)case class Student(sid: Int, sname: String)object TestBroadcastNestedLoopJoin3 { def main(args: Arr原创 2021-10-19 14:50:21 · 4652 阅读 · 0 评论 -
使用explain来分析broadcast
最近发现一个问题,可以看到有DataFrame被广播,但不知道是左边还是右边,试图通过执行计划来判断哪个数据源被广播。准备数据import org.apache.spark.sql.SparkSessionimport org.apache.spark.sql.functions.broadcastcase class People(id: Int, name: String)case class Student(sid: Int, sname: String)object Broadca原创 2021-10-19 11:08:36 · 563 阅读 · 0 评论 -
通过可视化图了解您的 Spark 应用程序
过去,Apache Spark UI 在帮助用户调试应用程序方面发挥了重要作用。在最新的 Spark 1.4 版本中,我们很高兴地宣布数据可视化浪潮已经进入 Spark UI。此版本中新增的可视化功能包括三个主要组件:Spark 事件的时间线视图执行 DAGSpark Streaming 统计数据的可视化这篇博文将是由两部分组成的系列文章中的第一篇。这篇文章将涵盖前两个组成部分,并将最后一个部分保存到下一周的后续文章中。Spark 事件的时间线视图自 Spark 的早期版本以来,Spark翻译 2021-10-12 23:03:59 · 943 阅读 · 0 评论 -
使用explain来分析Spark应用
理解Spark的执行计划对Spark调优是非常重要的。Spark提供了一个explain API去查看Spark SQL查询的执行计划。在这篇文章中我会展示给你如何使用explain去获取执行计划以至于你可以调试和分析你的Spark应用。explain在Dateset上是可用的。你可以用它在Spark 查询真正运行之前就知道Spark的执行计划。当然,Spark也提供了UI,你可以通过UI去看Spark的执行计划以及其它细节当Spark 应用正在运行的时候。并且你可以配置Spark History Serv翻译 2021-09-18 11:45:07 · 2386 阅读 · 0 评论 -
Spark的spark-*和blockmgr-*目录里是什东西,怎么来的
blockmgr-*blockmgr-* 是谁创建的grep blockmgr-83325444-bc05-491e-8db4-752c5b282d0a stderr21/09/01 11:17:15 INFO storage.DiskBlockManager: Created local directory at /var/tmp/mesos/slaves/2a06b6b8-3000-40f9-9008-51caaef53399-S1/frameworks/2a06b6b8-3000-40f9-9原创 2021-09-01 10:40:41 · 2341 阅读 · 0 评论 -
Spark Event Log (三) ListenerBus
Event 流程图#mermaid-svg-3ItgqGclvxJ8Gevm .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-3ItgqGclvxJ8Gevm .label text{fill:#333}#mermaid-svg-3ItgqGclvxJ8Gevm .node rect,#mermaid-svg-原创 2021-08-31 18:27:25 · 292 阅读 · 0 评论 -
Spark Event Log (二) 开始和结束
Spark Event Log Start上一节已经看过操作Spaek Event Log的类是org.apache.spark.scheduler.EventLoggingListener,现在来分析一下start()方法 /** * Creates the log file in the configured log directory. */ def start() { if (!fileSystem.getFileStatus(new Path(logBaseDir))原创 2021-08-25 18:46:35 · 1340 阅读 · 0 评论 -
Spark Event Log (一)概述
这里写自定义目录标题什么是Spark Event Log为什么需要Spark Event Log如何开启Spark Event LogSpark Event Log张什么样子简单分析Spark Event LogSpark Event Log在History Server显示是什么样的是谁在写Event Log参考什么是Spark Event LogSpark Event Log是Spark内部主要的事件日志。比如Spark Application什么时候启动,什么时候关闭,什么时候Task开始,什么时原创 2021-08-23 18:39:02 · 3251 阅读 · 0 评论 -
Spark 常用的辅助配置
classpath稍后更新原创 2021-01-29 10:32:45 · 1267 阅读 · 0 评论 -
Spark Error pyspark.sql.utils.ParseException: “\nmismatched input ‘FROM‘ expecting
代码片段:data = spark.sql(f""" SELECT p.skuseq , p.name , p.enabled FROM base_promotion p WHERE p.enabled is TRUE""")错误信息:py4j.protocol.Py4JJavaError: An error occurred while calling o24.sql.: org.apach原创 2020-12-01 10:31:31 · 13321 阅读 · 0 评论 -
Spark PIVOT & UNPIVOT, 行转列和列转行
测试数据name course score Darren Chinese 71 Darren Math 81 Darren English 91 Jonathan Chinese 72 Jonathan Math 82 Jonathan English 92 Tom Chinese 73 行转列语法SELECT xxxFROM table_test原创 2020-05-29 17:47:35 · 2652 阅读 · 1 评论 -
Spark 如何并行执行多个job
对于Spark这样的分布式计算系统,任务会分发到多台机器上执行。如何榨干有限的集群资源来实现快速并行计算,是需要考虑的重要问题之一。而这个问题又可以拆解为:如何将有限的集群资源都分配给Spark使用;如何将分配到的资源都利用起来。本文的话题属于后者的范畴,将从笔者在实践中遇到的场景出发,探讨如何在Spark下并行执行多个Job。背景 在我们的数据系统中,有一些实时流任务与离线任务会将...转载 2019-10-30 16:31:54 · 7136 阅读 · 3 评论 -
从PageRank Example谈Spark应用程序调优
最近在做BigData-Benchmark中PageRank测试,在测试时,发现有很多有趣的调优点,想到这些调优点可能是普遍有效的,现把它整理出来一一分析,以供大家参考。BigData-Benchmark中的Spark PageRank采用的是Spark开源代码examples包里的PageRank的代码,原理及代码实现都比较简单,下面我简单地介绍下。PageRank基本原理介绍PageR...转载 2019-09-26 18:02:49 · 698 阅读 · 1 评论 -
Spark的driver理解和executor理解
一、看了很多网上的图,大多是dirver和executor之间的图,都不涉及物理机器 如下图,本人觉得这些始终有些抽象看到这样的图,我很想知道driver program在哪里啊,鬼知道?为此我自己研究了一下,网友大多都说是对的有不同想法的请评论 二、现在我有三台电脑 分别是 192.168.10.82 –>bigdata01.hzjs.co 192.16...转载 2018-10-11 09:30:48 · 28387 阅读 · 3 评论 -
Scala Scalatest Maven 单元测试配置(测试报告和覆盖率报告)
第一篇:Scala Scalatest Maven 单元测试配置(测试报告和覆盖率报告)第二篇:Scala Scalatest Maven 集成测试配置环境:Maven: 3.3.9Scala: 2.11.11Scalatest_2.11: 3.0.1这次配置单元测试没有使用Junit,网上很多的测试配置都是基于Junit的,所以查了很久终于找到了一些和scalatest配套...原创 2018-12-16 14:57:11 · 6309 阅读 · 6 评论 -
Scala Scalatest Maven 集成测试配置
第一篇:Scala Scalatest Maven 单元测试配置(测试报告和覆盖率报告)第二篇:Scala Scalatest Maven 集成测试配置最近在做单元测试的时候发现了一个问题,我使用静态变量存放环境信息,默认使用的是单元测试的环境(unitTest),可是跑到集成测试(integrationTest)的时候,发现环境信息依然是单元测试的环境信息。因为集成测试也是作为单元测试来...原创 2019-01-21 19:40:19 · 2323 阅读 · 1 评论 -
Spark 问题整理
问题一: Spark Job执行了两次由于job内部有一个逻辑,如果第一次失败,第二次重试已没有意义,那么就没有必要让它跑第二次,如下图所示:首先调查为什么默认是尝试两次,结果如下:<property> <name>yarn.resourcemanager.am.max-attempts</name> <value>...原创 2019-01-28 18:32:18 · 2238 阅读 · 0 评论 -
Spark 解析XML文件到DataFrame
公司遇到一点需求,平时load文件基本上都是csv格式的文件,可是就有那么一个文件是xml文件,这也正常,因为文件是别的team推过来的,自然要遵循他们的格式,于是就要想办法解析xml文件。目标是把xml文件转换为DataFrame,然后写到表中。可是spark.reader并没有读取xml格式文件的方法,于是需要看有没有别的jar包辅助完成这项任务。百度google搜索之后,确实发现...原创 2019-03-26 18:40:24 · 6658 阅读 · 1 评论 -
SparkSQL – 聊聊Join
Join背景介绍Join是数据库查询永远绕不开的话题,传统查询SQL技术总体可以分为简单操作(过滤操作-where、排序操作-limit等),聚合操作-groupBy等以及Join操作等。其中Join操作是其中最复杂、代价最大的操作类型,也是OLAP场景中使用相对较多的操作。因此很有必要聊聊这个话题。另外,从业务层面来讲,用户在数仓建设的时候也会涉及Join使用的问题。通常情况下,数据仓库...转载 2019-05-21 22:55:22 · 281 阅读 · 0 评论 -
Spark 读写CSV的常用配置项
Spark 2.0 之前,Spark SQL 读写 CSV 格式文件,需要 Databricks 官方提供的 spark-csv 库。在 Spark 2.0 之后,Spark SQL 原生支持读写 CSV 格式文件。测试带标题的文件如下:id|name|age1| darren |182|anne|183|"test"|184|'test2'|18package com.da...转载 2019-06-03 23:13:34 · 24322 阅读 · 8 评论 -
Apache Spark 统一内存管理模型详解
本文将对 Spark 的内存管理模型进行分析,下面的分析全部是基于 Apache Spark 2.2.1 进行的。为了让下面的文章看起来不枯燥,我不打算贴出代码层面的东西。文章仅对统一内存管理模块(UnifiedMemoryManager)进行分析,如对之前的静态内存管理感兴趣,请参阅网上其他文章。我们都知道 Spark 能够有效的利用内存并进行分布式计算,其内存管理模块在整个系统中扮演着非常...转载 2019-09-18 17:49:56 · 476 阅读 · 0 评论 -
Spark中的Spark Shuffle详解
Shuffle简介Shuffle描述着数据从map task输出到reduce task输入的这段过程。shuffle是连接Map和Reduce之间的桥梁,Map的输出要用到Reduce中必须经过shuffle这个环节,shuffle的性能高低直接影响了整个程序的性能和吞吐量。因为在分布式情况下,reduce task需要跨节点去拉取其它节点上的map task结果。这一过程将会产生网络资源消...转载 2019-09-20 16:14:19 · 701 阅读 · 0 评论 -
Spark启动时的master参数以及Spark的部署方式
我们在初始化SparkConf时,或者提交Spark任务时,都会有master参数需要设置,如下:conf = SparkConf().setAppName(appName).setMaster(master)sc = SparkContext(conf=conf)/bin/spark-submit \ --cluster cluster_name \ ...转载 2018-08-28 18:17:39 · 21782 阅读 · 2 评论