自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

PowerMe

点滴记录

  • 博客(18)
  • 资源 (3)
  • 收藏
  • 关注

原创 Clickhouse实现累计求和cumulative sum

源表数据如下:timeprovinceorder_cnt20200601shandong10020200601jiangsu20020200601zhejiang30020200602shandong20020200602jiangsu30020200602zhejiang40020200603shandong40020200603jiangsu50020200603zhejiang600需求是

2020-06-15 19:13:51 7646 9

原创 spark通过官方jdbc写入数据到clickhouse

因为之前测试spark 2.4.0以上版本无法通过native jdbc接口写入clickhouse(之前的文章),尝试了下官方的jdbc接口。环境clickhouse两个分片,无副本读取hive分区,不同分区数据交替写入两个分片实现import java.util.Randomimport org.apache.spark.SparkConfimport org.apache.spark.sql.types.{DoubleType, LongType, StringType}impo

2020-05-21 14:04:19 4322 6

原创 clickhouse jdbc报错:Too many partitions for single INSERT block (more than 100)

通过clickhouse官方jdbc写入时报错:Too many partitions for single INSERT block (more than 100)解决:调整了建表时PARTITION BY分区字段,因为是从hive里读的,所以直接用了hive分区的值: PARTITION BY dt,之前用的add_time字段做分区:toYYYYMMDD(toDateTime(last_update_time, 'Asia/Shanghai')),这个字段在同一批次写入里包括大于100个分区值,c

2020-05-21 13:49:55 4225

原创 Spark DataSource API 分析

什么是Spark Datasource APISpark Datasource API 是一套连接外部数据源和Spark引擎的框架它主要是给Spark框架提供一种快速读取外界数据的能力,它可以方便地把不同的数据格式通过DataSource API注册成Spark的表,然后通过Spark SQL直接读取。它可以充分利用Spark分布式的优点进行并发读取,而且SparkSQL本身有一个很好的Catalyst优化引擎,能够极大的加快任务的执行。Spark Datasource API 同时提供了一套优化机制

2020-05-20 11:11:47 432

原创 Spark Streaming 指定消费Topic中某个Partition的数据

最近接触到一个需求:通过Driect API消费Kafka topic中指定partiton中的数据。这个partition中的数据是用户通过某种算法过滤出的有效数据,其他partition数据不作处理,代码片段实现如下:val kafkaParams = Map[String, String]("metadata.broker.list" -> "ip:port", "auto.offset.reset" -> "largest") val kc = new KafkaCluste

2020-05-20 11:10:06 473

原创 SparkStreaming 新增Metrics 支持Kafka数据消费堆积监控

在SparkStreaming任务运行的过程中,由于数据流量或者网络的抖动,任务的batch很可能出现delay,所以就出现了一个需求:实时监控任务对kafka消息的消费,及时了解堆积情况。这个需求应该有很多种解决方案,我这边提供的思路是基于Spark Metrics System的。SparkStreaming任务在运行过程中,会产生很多Metrics信息,不断地推送到Sink上面,我们这里使用到的是MetricsServlet。打开Spark UI,我们能够很方便地通过RestAPI方式请求任务Me

2020-05-20 11:07:04 424

原创 SparkStreaming使用messageHandler预处理Kafka数据

在SparkStreaming任务中,可以使用DirectKafkaInputDStream中的messageHandler功能对接受到的kafka数据做下预处理,接口声明如下图:最近就收到一个需求,很简单:如果kafka中的原数据类似于【a,b,1:2:3,d】,但想要将数据的[1:2:3]字段拆开分别跟其他字段组成一个字符串,如:【a,b,1,d】【a,b,2,d】【a,b,3,d】这时就可以使用messageHandler对原数据做处理,实现主要代码如下:...

2020-05-20 11:05:35 319

原创 HistoryServer 进程运行日志无限增长问题解决

Spark-HistoryServer在运行过程中会打印自身进程的日志,这里是指打印在${SPARK_HOME}/logs目录下,名称为spark-spark-org.apache.spark.deploy.history.HistoryServer-1-node.hostname.out的日志,非eventLog。这个日志在Spark层面没有做相应的控制,也没有相应的参数做调优。这种情况下该日志文件会无限增长,最终将磁盘打满。前面我分享过一篇关于Driver/Executor日志控制的文章(在这里),这篇

2020-05-20 11:04:13 323

原创 SparkOptimizer 优化规则:OptimizeMetadataOnlyQuery

这两天在SparkSQL Core看到一个优化规则:OptimizeMetadataOnlyQuery,它的意思是如果一个sql只涉及表的分区字段元信息查询的话,执行过程将不会路由到TableScanExec的PhysicalPlan进行表扫描,而是通过分区元信息的字段和值构建LocalRelation,进而构造一个LocalTable,走LocalTableScanExec的PhysicalPlan。这个规则的触发要满足下面几个条件:sql中所有查询的字段必须是分区字段如果使用了聚合函数,必须满足

2020-05-20 11:01:55 368

原创 SparkSQL针对DataSource表的Cache优化

Spark内部针对DataSource表的查询做了缓存优化,使得在同一任务中多次访问同一张DataSource表场景下可以跳过重复的获取表meta数据过程,以提升表读取性能。缓存的内容是表名和其对应的LogicalRelation。缓存机制:SQL语法解析后进行Analyzer的过程,因为我们关注表的缓存机制,所以只看表分析中的一个关键Rule:ResolveRelations。Analyzer 对Parsed Logical Plan进行遍历,发现UnresolvedRelation后,就对它启动合规

2020-05-20 11:00:17 452

原创 Spark日志过大导致磁盘溢出问题解决方案

一 问题背景平台近期出现多次spark任务日志文件将磁盘打满,导致平台异常报警和任务失败的情况,这些任务包括Spark-Streaming任务和普通Spark任务。产生该问题的原因主要是:Spark-Streaming任务运行时间比较长,Executor和Driver进程产生的Spark系统日志数量很大;业务用户在应用代码中使用System.out.print等输出了大量的调试信息(曾有任务运行40分钟打满100G日志文件)。以上信息全部输出在Yarn Container日志路径下的stdout和std

2020-05-20 10:58:50 1371

原创 SparkOptimizer 优化:OptimizeIn(In to InSet)

最近在调试Spark-SQL的时候看了一个OptimizeIn优化规则,该规则做了两个事情:去除In中重复的Literal条件;如果In中Literal条件数目大于optimizerInSetConversionThreshold(默认值为10),做In到InSet的表达式转换。在做DataSource扩展filter pushdown的时候要注意处理这种优化。源码如下:实例:...

2020-05-18 12:02:41 327

原创 使用Spark-SQL进行ElasticSearch数据探查

目前针对SQL on ElasticSearch 已经有了比较好的解决方案:elasticsearch-sql,其实Spark-SQL也可以满足一些基本的ES数据探查的需求,实现起来也相对简单。elasticsearch-spark的包针对ES扩展了Spark Datasource,我们可以使用sql查询es中的数据,中间Spark充当了“SQL解析器”的角色。环境与数据准备:Spark-2.1.0环境;elasticsearch-spark-20_2.11-5.4.2.jar;Hive环境E

2020-05-18 12:01:12 654

原创 Spark JDBC DataSource 下推全部SQL逻辑

通过源码可以知道,目前Spark JDBC Datasource在拉取数据形成JDBCRDD时,只把查询字段列表,表名和Filter下推到了数据库一侧:如果我的sql还有聚合查询,那么聚合查询其实是在Spark端执行的。即先经过过滤把所需字段的所有数据抽取出来形成RDD,在RDD上再执行聚合操作。那能不能把全部SQL都下推到数据库侧呢?答案是可以的。看代码逻辑,只要将table变量构成一个子句即可,子句的逻辑就是我要查询的sql逻辑,比如select avg(scores), class from

2020-05-18 11:58:57 430

原创 Spark LogicalPlan 逆向生成SQL语句

在使用spark进行sql分析过程中,一般是将sql语句解析成LogicalPlan查看执行计划,LogicalPlan能够帮助我们了解Spark-SQL的解析,转换,优化,映射和执行的机制。最近在看Spark-SQL源码过程中,了解到一个逆向逻辑,即将LogicalPlan逆向生成SQL语句。代码实现在org.apache.spark.sql.catalyst.SQLBuilder中。如果手上有一个logicalPlan,通过创建SQLBuilder实例,调用toSQL方法就可以进行逆向转化。值

2020-05-18 11:55:19 582

原创 clickhouse连接Tableau

目录Windows版本tableau连接Linux 版本Tableau连接Windows版本tableau连接windows版本tableau是通过ODBC配置管理器加载clickhouse ODBC驱动连接。下载clickhouseODBC驱动并安装: clickhouse-odbc-1.1.7-win64.msi打开windows ODBC数据源(64位)点击添加选择Clickhouse ODBC Driver (Unicode)配置ODBC连接,注意name不能有空格打开t

2020-05-17 12:29:54 3691 3

原创 Spark通过ClickHouse-Native-JDBC写入Clickhouse

目前通过JDBC写Clickhouse有两种插件可以用官方的JDBC:8123端口基于HTTP实现的,整体性能不太出色,有可能出现超时的现象housepower的ClickHouse-Native-JDBC:9000端口基于TCP协议实现,支持高性能写入,数据按列组织并有压缩记录下使用ClickHouse-Native-JDBC的过程:Spark版本:2.1.0Clickhouse版本:20.2.1.2183,单点部署ClickHouse-Native-JDBC版本:2.1-stable

2020-05-15 15:17:11 3856

原创 jquery 导航条 显示和自动隐藏div

$(document).ready(function(){$(".div2").click(function(){ $(this).next("div").slideToggle("slow")  .siblings(".div3:visible").slideUp("slow");});});ps:   1、slideToggle实现选中div的显示和隐藏;

2015-03-16 20:09:24 660

Oracle.PL.SQL程序设计_第五版_上册

《Oracle PL/SQL程序设计(第5版)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何有效地使用它。

2016-01-26

大容量Web应用性能测试与LoadRunner实战

主要讲解大容量Web性能测试的特点和方法,以及使用业内应用非常广泛的工具——Load Runner 9进行性能测试的具体技术与技巧。

2016-01-22

架构之美(清晰中文完整版)

本书围绕5个主题领域来组织本书的内容:概述、企业应用、系统、最终用户应用和编程语言。本书让最优秀的设计师和架构师来描述他们选择的软件架构,剥开架构的各层,展示他们如何让软件做到实现功能、可靠、易用、高效率、可维护、可移植和优雅。

2016-01-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除