12 2018 档案
摘要:一 场景分析 定位分析广泛应用,比如室外基站定位,室内蓝牙beacon定位,室内wifi探针定位等,实现方式是三点定位 Trilateration 理想情况 这种理想情况要求3个基站‘同时’采集‘准确’的距离信息, 实际情况 3个基站采集数据的时间是分开的; 采集数据的距离不准确; 解决方法是: 增
阅读全文
摘要:一 场景分析 用户行为分析应用的场景很多,像线上网站访问统计,线下客流分析(比如图像人脸识别、wifi探针等),比较核心的指标有几个: PV | UV | SD | SC 指标说明: PV(Page View):网站浏览量或者商场门店的访问量UV(Unique Visitor):独立访客数,即去重后
阅读全文
摘要:spark 2.1.1 spark初始化rdd的时候,需要读取文件,通常是hdfs文件,在读文件的时候可以指定最小partition数量,这里只是建议的数量,实际可能比这个要大(比如文件特别多或者特别大时),也可能比这个要小(比如文件只有一个而且很小时),如果没有指定最小partition数量,初始
阅读全文
摘要:spark 2.1.1 spark中可以通过RDD.sortBy来对分布式数据进行排序,具体是如何实现的?来看代码: org.apache.spark.rdd.RDD /** * Return this RDD sorted by the given key function. */ def sor
阅读全文
摘要:scala 官方地址 https://www.scala-lang.org/ 本文尽可能包含了一些主要的java和scala在编程实践时的显著差异,展现scala的代码的简洁优雅;scala通吃<面向对象编程Object Oriented Programming>和<函数式编程Functional
阅读全文
摘要:今天遇到一个问题,spark应用中在一个循环里执行sql,每个sql都会向一张表写入数据,比如 insert overwrite table test_table partition(dt) select * from test_table_another; 除了执行sql没有其他逻辑,每个sql都
阅读全文
摘要:Hive SQL解析过程 SQL->AST(Abstract Syntax Tree)->Task(MapRedTask,FetchTask)->QueryPlan(Task集合)->Job(Yarn) SQL解析会在两个地方进行: 一个是SQL执行前compile,具体在Driver.compil
阅读全文
摘要:一 问题 在hive1.2中使用hive或者beeline执行sql都有进度信息,但是升级到hive2.0以后,只有hive执行sql还有进度信息,beeline执行sql完全silence,在等待结果的过程中完全不知道执行到哪了 1 hive执行sql过程(有进度信息) hive> select
阅读全文
摘要:hive 2.1 一 问题 最近有一个场景,要向一个表的多个分区写数据,为了缩短执行时间,采用并发的方式,多个sql同时执行,分别写不同的分区,同时开启动态分区: set hive.exec.dynamic.partition=true insert overwrite table test_tab
阅读全文
摘要:hive 2.1 hive执行sql有两种方式: 执行hive命令,又细分为hive -e,hive -f,hive交互式; 执行beeline命令,beeline会连接远程thrift server; 下面分别看这些场景下sql是怎样被执行的: 1 hive命令 启动命令 启动hive客户端命令
阅读全文
摘要:一 简介 DBSCAN:Density-based spatial clustering of applications with noise is a data clustering algorithm proposed by Martin Ester, Hans-Peter Kriegel, J
阅读全文
摘要:读过《编程珠玑》(<Programming Pearls>)的人应该还对开篇的Case记忆犹新,大概的场景是: 作者的一位在电话公司工作的朋友想要统计一段时间内不同的电话号码的个数,电话号码的数量很大,当时的内存很小,所以不能把所有的电话号码全部放到内存来去重统计,他的朋友很苦恼。 作者聪明的想到了
阅读全文
摘要:一 简介 Shuffle,简而言之,就是对数据进行重新分区,其中会涉及大量的网络io和磁盘io,为什么需要shuffle,以词频统计reduceByKey过程为例, serverA:partition1: (hello, 1), (word, 1)serverB:partition2: (hello
阅读全文
摘要:spark中要将计算结果取回driver,有两种方式:collect和take,这两种方式有什么差别?来看代码: org.apache.spark.rdd.RDD /** * Return an array that contains all of the elements in this RDD.
阅读全文
摘要:之前讨论过hive中limit的实现,详见 https://www.cnblogs.com/barneywill/p/10109217.html下面看spark sql中limit的实现,首先看执行计划: spark-sql> explain select * from test1 limit 10
阅读全文
摘要:最近把一些sql执行从hive改到spark,发现执行更慢,sql主要是一些insert overwrite操作,从执行计划看到,用到InsertIntoHiveTable spark-sql> explain insert overwrite table test2 select * from t
阅读全文
摘要:spark on yarn通过--deploy-mode cluster提交任务之后,应用已经在yarn上执行了,但是spark-submit提交进程还在,直到应用执行结束,提交进程才会退出,有时这会很不方便,并且不注意的话还会占用很多资源,比如提交spark streaming应用; 最近发现sp
阅读全文
摘要:最近在hdfs写文件的时候发现一个问题,create写入正常,append写入报错,每次都能重现,代码示例如下: FileSystem fs = FileSystem.get(conf); OutputStream out = fs.create(file); IOUtils.copyBytes(i
阅读全文
摘要:最近提交一个spark应用之后发现执行非常慢,点开spark web ui之后发现卡在一个job的一个stage上,这个stage有100000个task,但是绝大部分task都分配到两个executor上,其他executor非常空闲,what happened? 查看spark task分配逻辑
阅读全文
摘要:一 简介 spark核心是RDD,官方文档地址:https://spark.apache.org/docs/latest/rdd-programming-guide.html#resilient-distributed-datasets-rdds官方描述如下:重点是可容错,可并行处理 Spark r
阅读全文
摘要:spark 2.1.1 beeline连接spark thrift之后,执行use database有时会卡住,而use database 在server端对应的是 setCurrentDatabase, 经过排查发现当时spark thrift正在执行insert操作, org.apache.sp
阅读全文
摘要:spark查orc格式的数据有时会报这个错 Caused by: java.lang.NullPointerException at org.apache.hadoop.hive.ql.io.orc.OrcInputFormat$BISplitStrategy.getSplits(OrcInputF
阅读全文
摘要:本地运行spark报错 18/12/18 12:56:55 WARN Utils: Service 'sparkDriver' could not bind on port 0. Attempting port 1.18/12/18 12:56:55 WARN Utils: Service 'spa
阅读全文
摘要:spark 2.1.1 hive正在执行中的sql可以很容易的中止,因为可以从console输出中拿到当前在yarn上的application id,然后就可以kill任务, WARNING: Hive-on-MR is deprecated in Hive 2 and may not be ava
阅读全文
摘要:spark 2.1.1 spark在写数据到hive外部表(底层数据在hbase中)时会报错 Caused by: java.lang.ClassCastException: org.apache.hadoop.hive.hbase.HiveHBaseTableOutputFormat cannot
阅读全文
摘要:spark 2.1.1 一 启动命令 启动spark thrift命令 $SPARK_HOME/sbin/start-thriftserver.sh 然后会执行 org.apache.spark.deploy.SparkSubmit --class org.apache.spark.sql.hive
阅读全文
摘要:spark 2.1.1 spark里执行sql报错 insert overwrite table test_parquet_table select * from dummy 报错如下: org.apache.spark.SparkException: Task failed while writi
阅读全文
摘要:python应用通常需要一些库,比如numpy、pandas等,安装也很简单,直接通过pip # pip install numpyRequirement already satisfied: numpy in /export/App/anaconda2/lib/python2.7/site-pac
阅读全文
摘要:免费股票行情接口: A股 1 sina 新浪js接口 http://hq.sinajs.cn/list=sh600001 返回 var hq_str_sh600011="华能国际,7.390,7.420,7.230,7.500,7.110,7.210,7.230,24257738,174459225
阅读全文
摘要:maven编译工程报错 [ERROR] Failed to execute goal net.alchim31.maven:scala-maven-plugin:3.2.2:add-source (scala-compile-first) on project trade: Execution sc
阅读全文
摘要:今天尝试运行一个古老的工程,配置好之后编译通过,结果运行时报错: org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class
阅读全文
摘要:Session机制 JSESSIONID是Session的标识,当客户端请求服务器端的时候,服务器端会检查是否已经给这个客户端创建过Session,也就是看客户端的请求中的header是否有Cookie:JSESSIONID=…,如果客户端请求包含JSESSIONID,那么服务器端可以根据JSESS
阅读全文
摘要:linux常用命令之文本替换 1 vi vi test_file :%s/h/h1/g 注释:全文替换,将h替换为h1 :1,4s/h/h1/g 注释:将第1行到第4行的h替换为h1 :%s/\n/,/g 注释:将换行符替换为, 2 sed sed -e 's/h/h1/g' test_file 注
阅读全文
摘要:对文件进行词频统计,是一个大数据领域的hello word级别的应用,来看下实现有多少种: 1 Linux单机处理 egrep -o "\b[[:alpha:]]+\b" test_word.log|sort|uniq -c|sort -rn|head -10 2 Scala单机处理(Array)
阅读全文
摘要:linux服务器服务器间拷贝文件,有几种方式: 1 如果是定时任务,可以用rsync 2 如果是基于ssh登录,可以用scp,优点是可以实现远程到远程的拷贝,缺点是需要账号密码 upload: scp $local_file $remote_username@$remote_ip:$remote_f
阅读全文
摘要:官方文档如下: http://oozie.apache.org/docs/5.0.0/AG_OozieUpgrade.html 这里写的比较简单,大概过程如下:1 下载5.0代码并编译;2 解压5.0包并替换oozie-site.xml;3 停掉所有的流程;4 按照官方文档说的升级DB;5 重新启动
阅读全文
摘要:yarn中有一个比较重要的配置yarn.nodemanager.local-dirs,如果配置的不好,在饱和状态运行下集群会出现很多问题:1 默认配置${hadoop.tmp.dir}/nm-local-dir,系统盘通常只有几百G,配置在这里会经常报磁盘空间不足的错误;2 配置到其中1个数据盘,比
阅读全文
摘要:HDFS中的File由Block组成,一个File包含一个或多个Block,当创建File时会创建一个Block,然后根据配置的副本数量(默认是3)申请3个Datanode来存放这个Block; 通过hdfs fsck命令可以查看一个文件具体的Block、Datanode、Rack信息,例如: hd
阅读全文
摘要:HDFS会周期性的检查是否有文件缺少副本,并触发副本复制逻辑使之达到配置的副本数, <property> <name>dfs.replication</name> <value>3</value> </property> 具体实现是在BlockManager中启动线程ReplicationMonit
阅读全文
摘要:公司一个kylin集群,每到周二下午就会逐个节点OOM退出,非常有规律,kylin集群5个节点,每个节点分配的内存已经不断增加到70多G,但是问题依旧; 经排查发现,每周二下午kylin集群的请求量确实会多一些,有可能是kylin的bug,也可能是其他原因,当节点kylin进程内存占用上升时,打印线
阅读全文
摘要:classloader简介 1 classloader层次结构(父子关系) Bootstrap(ClassLoader) ExtClassLoader AppClassLoader XXXClassLoader 详见代码如下: sun.misc.Launcher public Launcher()
阅读全文
摘要:问题现象:hive执行sql报错 select count(*) from test_hive_table; 报错 Error: java.io.IOException: org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed
阅读全文
摘要:常见调度框架实现方式 开源 Oozie 成熟稳定可靠,可直接用于生产环境 Azkaban 单点、简单粗暴,有两套独立的调度实现,必须二次开发才可用 Airflow 代码以及流程配置都是python 自己封装 基于quartz单机 使用zk来做分布式控制 常用quartz+zk做调度系统 使用db心跳
阅读全文
摘要:问题 Drill最新版本是1.14,从1.13开始Drill支持hive的版本升级到2.3.2,详见1.13的release notes The Hive client for Drill is updated to version 2.3.2. With the update, Drill sup
阅读全文
摘要:问题重现 rdd.repartition(1).write.csv(outPath) 写文件之后发现文件是压缩过的 write时首先会获取hadoopConf,然后从中获取是否压缩以及压缩格式 org.apache.spark.sql.execution.datasources.DataSource
阅读全文
摘要:内部表和外部表最主要的一个差别就是删除表或者删除分区时,底层的文件是否自动删除,内部表会自动删除,外部表不会自动删除,所以基础数据表一定要用外部表,即使误删表或分区之后,还可以很容易的恢复回来。 虽然外部表可以恢复,但是逐个分区恢复也很累,如果你的分区很多,或者有多级分区的时候 alter tabl
阅读全文
摘要:常用格式 textfile 需要定义分隔符,占用空间大,读写效率最低,非常容易发生冲突(分隔符)的一种格式,基本上只有需要导入数据的时候才会使用,比如导入csv文件; ROW FORMAT DELIMITED FIELDS TERMINATED BY '\u0001' LINES TERMINATE
阅读全文
摘要:通过oozie job id可以查看流程详细信息,命令如下: oozie job -info 0012077-180830142722522-oozie-hado-W 流程详细信息如下: Job ID : 0012077-180830142722522-oozie-hado-W Workflow N
阅读全文
摘要:当两个表需要join时,如果一个是大表,一个是小表,正常的map-reduce流程需要shuffle,这会导致大表数据在节点间网络传输,常见的优化方式是将小表读到内存中并广播到大表处理,避免shuffle+reduce; 在hive中叫mapjoin(map-side join),配置为 hive.
阅读全文
摘要:spark任务添加依赖的方式: 1 如果是local方式运行,可以通过--jars来添加依赖; 2 如果是yarn方式运行,可以通过spark.yarn.jars来添加依赖; 这两种方式在oozie上都行不通,首先oozie上没办法也不应该通过local运行,其次通过spark.yarn.jars方
阅读全文
摘要:hdfs、yarn、hbase这些组件的master支持多个,实现自动主备切换,其中hdfs、hbase无论访问主master或者备master都可以正常访问页面,但是yarn比较特别,只有主master的页面可以访问,备master会返回Refresh,3s后重定向; 一种方式是提供两个域名,分别
阅读全文
摘要:java中访问hbase有两种方式,一种是hbase自带的client,一种是通过hbase thrift 1 hbase client示例 Configuration conf = HBaseConfiguration.create(); conf.set(HConstants.ZOOKEEPER
阅读全文
摘要:问题重现 select id from big_table where name = 'sdlkfjalksdjfla' limit 100; 首先看执行计划: hive> explain select * from big_table where name = 'sdlkfjalksdjfla'
阅读全文
摘要:spark 2.1.1 一 问题重现 问题代码示例 object MethodPositionTest { val sparkConf = new SparkConf().setAppName("MethodPositionTest") val sc = new SparkContext(spark
阅读全文
摘要:oozie中支持很多的action类型,比如spark、hive,对应的标签为: <spark xmlns="uri:oozie:spark-action:0.1"> ... oozie中sharelib用于存放每个action类型需要的依赖,可以查看当前所有的action类型以及每个action类
阅读全文
摘要:spark 2.1.1 一 问题重现 spark-submit --master local[*] --class app.package.AppClass --jars /jarpath/zkclient-0.3.jar --driver-memory 1g app.jar 报错 Java Hot
阅读全文
摘要:spark 2.1.1 最近spark任务(spark on yarn)有一个报错 Diagnostics: Container [pid=5901,containerID=container_1542879939729_30802_01_000001] is running beyond phys
阅读全文
摘要:hive执行sql提交到yarn上的任务名字是被处理过的,通常只能显示sql的前边一段和最后几个字符,这样就会带来一些问题: 1)相近时间提交了几个相近的sql,相互之间无法区分; 2)一个任务有问题,想看下这个任务具体执行的是什么?是谁的任务? 通过以下方法可以查看: 1)如果任务正在runnin
阅读全文
摘要:Spark2.1.1 最近运行spark任务时会发现任务经常运行很久,具体job如下: Job Id ▾ Description Submitted Duration Stages: Succeeded/Total Tasks (for all stages): Succeeded/Total 16
阅读全文