Spark
文章平均质量分 64
Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎
yyoc97
--
展开
-
scala dataframe添加一列行号到开头
需求项目有时候需要在dataframe开头添加字段,之前也没搜到好的案例。下面就写个相对简洁的方法。实现import org.apache.spark.sql.SparkSessionimport org.apache.spark.sql.functions.{col, monotonically_increasing_id}object SparkTest4 { def main(args: Array[String]): Unit = { val sc = SparkSessio原创 2021-04-30 16:35:00 · 1206 阅读 · 2 评论 -
scala cube聚合操作实例
前言因为内部平台spark-sql不方便调优、配置资源的因素,某些情况还是会用到scala dateframe操作数据,今天记录一些关于聚合,count distinct多个字段,重名展示的一些示例。数据准备Jack2 22 20200405Jack2 21 20200401Jack2 21 20200401Kate 22 20200406Mi2ng 20 20200406代码示例def main(args: Array[String]): Unit = { val sc = S原创 2020-12-08 16:27:40 · 352 阅读 · 0 评论 -
scala(Row、Array、Tuple、Class、RDD、DF之间类型转换)
前言spark中因为Rdd和Dataframe的一些分装函数处理,经常会遇到类型的相关转换,今天就记录些常见的几种类型转换。Array => Rowval arr = Array("aa/2/cc/10","xx/3/nn/30","xx/3/nn/20")// val row = Row.fromSeq(arr)val row = RowFactory.create(arr)Row => Arrayval a:Array[Any] = row.toSeq.toArray有时原创 2020-10-25 15:34:17 · 12145 阅读 · 0 评论 -
spark数据倾斜处理实践
文章目录判断是否倾斜实践定位解决判断是否倾斜通过Spark Web UI查看运行到了哪个Stage。 主要看最慢的Stage各task里 Shuffle Write Size / Records分配的数据量,来确定是否是数据倾斜。实践定位如图stage基本在几分钟内、而这个stage运行较长时间,却只有一个task没完成了。这种情况发生倾斜的概率就很大了。我们可以点到具体的stage中看下详情。从DAG中我们可以看到有leftOuterJoin算子。所以任务必然有shuffle产生,接着继续原创 2020-10-21 21:28:48 · 808 阅读 · 0 评论 -
yarn capacity scheduler调度器实践
文章目录简述配置测试异常结尾简述能力调度器在生产实践中是用的较多的一种模式,今天单机来实践一下。hadoop版本我这里选用了3.1.2,spark是用的2.4.3配置yarn-site.xml这里主要配置yarn.resourcemanager.scheduler.class属性就好。<configuration> <property> ...原创 2020-04-01 18:28:29 · 428 阅读 · 0 评论 -
pyspark.sql.utils.AnalysisException: Table or view not found
基于spark2.2做测试,期间遇到的一些问题。jar包提交public static void main(String[] args) { SparkConf conf = new SparkConf(); conf.setAppName("Tsoip") SparkSession orCreate = SparkSession.builder().c...原创 2019-05-30 18:49:21 · 10203 阅读 · 2 评论 -
spark sql逻辑计划和物理计划执行原理
一条 SQL 在 Apache Spark 之旅(中)在《一条 SQL 在 Apache Spark 之旅(上)》文章中我们介绍了一条 SQL 在 ApacheSpark之旅的 Parser 和 Analyzer 两个过程,本文接上文继续介绍。优化逻辑计划阶段 - Optimizer在前文的绑定逻辑计划阶段对 Unresolved LogicalPlan 进行相关 transf...转载 2019-06-27 19:33:22 · 5087 阅读 · 2 评论 -
spark改造,查询执行进度和日志留存
一、在spark中查看执行完成的日志spark thrift server的web ui在运行时可以看到sql查询的提交用户,执行sql等信息但是当这个实例停掉或者异常终止以后,你再去spark history server的webui去查看,发现这部分信息就没有了……image.png究其原因,原来spark thrift server并没有将...转载 2019-06-28 09:29:13 · 2455 阅读 · 0 评论 -
Spark SQL优化利器——Adaptive Execution
引入 Intel 开源的 Adaptive Execution 功能,优化执行过程中的 shuffle 数目,执行过程中基于代价的 broadcast join 优化,替换 sort merge join,同时更彻底解决小文件问题。RBO 与 CBO 在逻辑计划优化阶段与物理计划生成阶段通过规则优化最终生成的 DAG。本文介绍的 Adaptive Execution 可在 Spark Jo...转载 2019-06-28 10:40:15 · 403 阅读 · 0 评论 -
Spark streaming手动保存offset到zk java实现
文章目录前言pom依赖版本Dome前言网上有部分案例是关于手动设置kafka中offset的,不过大多采用的是0.8的kafka版本,采用scala的编写,kafka-0.10版本的鲜有提及,或者都不完整。0.10版本是可以兼容之前的,但是新版本的api确实要更简洁易用。找不到可以直接拿来就用的,所以这里抽时间看官网api,写个较为完整的JAVA测试用例,希望对大家有帮助。pom依赖版本 ...原创 2019-09-17 19:06:09 · 467 阅读 · 0 评论 -
spark获取kafka数据的partition和topic
streaming读取kafka数据的分区和主题0.10.0 or higher导入pom。 <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-streaming-kafka-0-10_2.11</ar...原创 2019-03-08 18:56:57 · 2130 阅读 · 0 评论 -
Spark源码解析系列(四、资源分配及Executor启动)
文章目录回顾RegisterApplicationstartExecutorsOnWorkers回顾上一节 我们简单看了下application的注册过程,今天我们接着看下spark里核心设计之一的资源分配实现。RegisterApplicationMaster在收到消息后调用receive() 方法,根据消息类型找到注册application的实现部分。case RegisterApp...原创 2019-02-25 15:09:00 · 573 阅读 · 0 评论 -
Spark JavaPairRDD按值排序
Spark Tuple2元组根据Value排序今天遇到一个需求获取日志里每个方法调用的调用次数。在看了JavaPairRDD排序方法,都是按key进行操作的。sortByKey()5个方法,包括自定义Comparator的,都是按照Key来排序,有点伤感。 def sortByKey(comp: Comparator[K]): JavaPairRDD[K, V] = sortByKey(...原创 2018-04-16 19:23:36 · 3345 阅读 · 0 评论 -
KafkaException:Fetching topic metadata with correlation id 0 for topics [Set(test)]
本地链接远程Kafka异常远程机器fp-bd13搭建最新版Kafka (自带zookeeper),按照文档默认配置启动。远程新建producer和costumer一切正常。 本地spark链接:JavaPairReceiverInputDStream<String, String> kafkaStream =KafkaUtils ...原创 2018-04-17 11:32:31 · 10347 阅读 · 6 评论 -
Spark性能优化——基础篇
开发调优调优概述Spark性能优化的第一步,就是要在开发Spark作业的过程中注意和应用一些性能优化的基本原则。开发调优,就是要让大家了解以下一些Spark基本开发原则,包括:RDD lineage设计、算子的合理使用、特殊操作的优化等。在开发过程中,时时刻刻都应该注意以上原则,并将这些原则根据具体的业务以及实际的应用场景,灵活地运用到自己的Spark作业中。原则一:避转载 2018-05-04 20:16:50 · 315 阅读 · 0 评论 -
Spark性能优化——高级篇
前言继基础篇讲解了每个Spark开发人员都必须熟知的开发调优与资源调优之后,本文作为《Spark性能优化指南》的高级篇,将深入分析数据倾斜调优与shuffle调优,以解决更加棘手的性能问题。数据倾斜调优调优概述有的时候,我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜,此时Spark作业的性能会比期望差很多。数据倾斜调优,就是使用各种技术方案解决不同类型的数据转载 2018-05-07 08:29:47 · 443 阅读 · 0 评论 -
Spark为何使用Netty通信框架替代Akka
解决方案:一直以来,基于Akka实现的RPC通信框架是Spark引以为豪的主要特性,也是与Hadoop等分布式计算框架对比过程中一大亮点,但是时代和技术都在演化,从Spark1.3.1版本开始,为了解决大块数据(如Shuffle)的传输问题,Spark引入了Netty通信框架,到了1.6.0版本,Netty居然完成取代了Akka,承担Spark内部所有的RPC通信以及数据流传输。网络IO扫盲贴...转载 2018-12-20 00:49:17 · 316 阅读 · 0 评论 -
Spark源码解析系列(一、任务提交)
文章目录前言提交任务流程分析前言本系列文章默认您对spark有相应的了解。笔者选择的spark版本为2.2.0,不同版本可能又些许差异。提交任务流程分析1、首先我们先集群提交任务,会调用spark-submit 这个脚本。我找到spark安装目录下的/bin目录下。查看下其内容。if [ -z "${SPARK_HOME}" ]; then source "$(dirname "$0...原创 2019-02-22 17:16:10 · 589 阅读 · 0 评论 -
Spark源码解析系列(五、RDD的执行流程)
文章目录前言样例runJob前言上一节 我们看完了集群资源的分配及Executor启动,今天我们就来看下RDD的实际执行流程吧。默认大家已经知道spark中action和transformation两类算子的概念。样例def main(args: Array[String]): Unit = { val conf = new SparkConf().setMaster(&quot;local...原创 2019-02-27 18:07:04 · 585 阅读 · 0 评论 -
Spark源码解析系列(二、SparkContext内部初始化)
文章目录SparkContextTaskScheduler的实现SPIscheduler.start()SparkContext上一节我们介绍了spark-sumbit方式的任务提交。讲到了SparkContext初始化这里。我们都知道sc是spark应用最为核心的对象,那么今天我们就来看看它是如何进行初始化的。我们通过new SparkContext(conf) 方法进入源码。// 它是S...原创 2019-02-23 00:03:21 · 383 阅读 · 0 评论 -
Spark源码解析系列(三、client的注册)
文章目录回顾创建client调用onStart()注册application回顾上一节我们讲了SparkContext构造函数做的初始化,会创建TaskScheduler和DAGScheduler两个重要对象,TaskScheduler又会通过StandaloneSchedulerBackend构建Driver和client。这节我们接着看下client是如何进行注册的。 client = ...原创 2019-02-23 15:42:06 · 469 阅读 · 0 评论 -
Spark NoSuchMethodError
org.apache.spark.deploy.SparkHadoopUtil.getFSBytesReadOnThreadCallback()最近玩 Spark 遇到几次 NoSuchMethodError (找不到对应的方法) ,主要还是版本问题。比如我在2.2.1中使用下面方式读取文件就会抛出异常:SparkConf sparkConf = new SparkConf().set...原创 2018-04-16 18:57:29 · 2036 阅读 · 0 评论