- 博客(12)
- 资源 (2)
- 收藏
- 关注
原创 Spark SQL调优案例:单字段NOT IN子查询优化
背景有如下的数据查询场景。表结构create table order (order_id long, customer_id long) partitioned by (date string);要查询当天有订单,但是前一天没有订单的用户在当天的订单记录。数据分析的同事编写的最初版本的SQL如下select * from order where date='2021-07-17' and customer_id not in ( select customer_id fr
2021-07-17 21:07:24 2758 2
原创 Sqoop源码浅析
前言Apache Sqoop应该是在hadoop与SQL间上最常用的数据导入导出工具了。最近应为面试,简单看了一下sqoop 1.4.6的源码,整理如下。驱动类——Sqooporg.apache.sqoop.Sqoop是sqoop工具的启动类。 主要作用:解析命令行传入的参数根据参数调用相应的SqoopTool工具类——SqoopToolorg.apache.sqoop.Sqoop.Sqoo
2016-07-10 20:37:26 5922 1
原创 java.util.concurrent.ThreadPoolExecutor实现机制简介
java.util.concurrent.ThreadPoolExecutor实现机制简介前言最近面试的时候被问到『如何实现一个线程池』的问题。当时没回答上来。 今天看了一下JDK源码,大概了解了一下java.util.concurrent.ThreadPoolExecutor的实现方式,整理如下。思路根据javadoc中关于ThreadPoolExecutor类的描述可知。ThreadPoolE
2016-06-29 12:49:58 10384
原创 Stop Spark Streaming On YARN Gracefully
一、问题在YARN上停止Spark Streaming的方式比较粗暴“yarn application -kill [applicationId]”。命令执行后,YARN在分配给Streaming App的container上执行“kill -15”命令结束进程,不会考虑Streaming App的执行情况。虽然spark-yarn的ApplicationMaster在启动时加入了sh
2015-11-18 10:26:56 2037
原创 HashMap的数据结构
数据结构transient Entry[] table = (Entry[]) EMPTY_TABLE;table中的每一个元素是一个链表的头结点,这些链表称为bucketsize——HashMap包含的entry个数threshold——触发HashMap.resize的阈值 PUT通过 int hash = hash(key
2015-09-01 20:03:52 870
原创 从有序队列构造平衡二叉树
瞎写的,随便看看# coding:utf-8'''Created on 2015年7月27日@author: "zhouyifan"'''import sysclass Tree(object): def construct_from_array(self, a, root_node): parent_index = self.get_pa
2015-07-27 15:16:06 630
原创 Hive IN子句功能梳理
Hive 0.13.0之前的IN clause中只能包含常量:SELECT a.key,a.valueFROM aWHERE a.key in (SELECT b.key FROM b)Hive 0.13.0实现了IN子句中的uncorrelated subquery:SELECT a.key, a.valueFROM aWHERE a.key in (1,
2015-07-21 11:04:13 2734
原创 Spark 1.2.1有关writeAheadLog的官方文档的一个错误
阅读Spark 1.2.1的源码时发现官方文档的一处错误。[Experimental in Spark 1.2] Configuring write ahead logs - In Spark 1.2, we have introduced a new experimental feature of write ahead logs for achieving strong fault
2015-06-19 09:37:03 563
原创 Spark Streaming + Flume 相关源码阅读
照搬Spark Streaming + Flume Integration Guide的例子搭建了Pull-based Approach using a Custom Sink的流式计算例子。结果spark端输出的全是"Received 0(其实也不全是0,只是一秒一条记录,大部分都是0,所以没注意到不为零的记录)当时很纠结,只能一行一行源码的看。现在总算对这个Pull-based
2015-05-28 11:06:47 615
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人