自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

攻城狮Kevin

爱学习,爱工作,爱生活

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

原创 常用ES查询DSL语句

1. 针对hive表中jsonObject类型的String数据mapping中定义如下:"esf_room": { "type": "text", "fields": { "keyword": { "type": "keyword" } }, "norms": false},DSL查询语句如下:GET /hdp_teu_dia_f...

2019-11-12 16:08:23 1236 1

原创 Hive分区表总结

Hive中的分区其实就是分目录,根据某些维度(例如时间等)将数据表分成多份,一个分区表对应HDFS文件系统上一个独立的文件夹,该文件夹下是该分区所有的数据文件;查询时,通过where表达式选择查询所指定的分区即可,不用再查询整张表的所有数据,提高海量数据查询的效率。(1)创建分区表hive (hive_db1)> create table stu_par(id int , na...

2019-04-28 17:14:23 698

原创 HiveQL常用查询函数——nvl、case when、concat、collect_set、collect_list、explode & lateral view、窗口函数、rank

目录1. nvl(value,default_value)2. case wheneg1:对表emp_sex,求每个部门男女人数eg2:统计每个国家隶属洲的人口数(已知字段数据按照另一种条件分组)eg3:统计不同国家男女个数(完成不同条件的分组)3. concat、concat_ws、collect_set(列转行)4. explode & lateral vi...

2019-03-01 21:40:28 1742

转载 hadoop、hbase、hive、spark分布式系统架构原理

机器学习、数据挖掘等各种大数据处理都离不开各种开源分布式系统,hadoop用户分布式存储和map-reduce计算,spark用于分布式机器学习,hive是分布式数据库,hbase是分布式kv系统,看似互不相关的他们却都是基于相同的hdfs存储和yarn资源管理,hadoop、spark、Hbase、Hive、hdfs简介Hbase:是一个nosql数据库,和mongodb类似hdfs:h...

2019-02-19 08:50:36 432

原创 Hadoop和Spark的前世今生 & MR、Yarn、Spark架构原理

目录架构原理总图一、Hadoop的历史-> 1.0版本 -> 缺点-> 2.0版本-> MapReduce架构组成:-> Yarn架构组成和运行原理:二、Spark的历史-> Spark架构组成-> Driver和Executor架构原理总图一、Hadoop的历史...

2019-01-23 21:44:16 641

原创 使用bulk方式将json文件数据导入ES

使用json文件可以给es中导入数据,10万条左右的数据可以一次导入,数量太大时导入就会报错。大数量的到导入还是需要用bulk方式。accounts.json文件格式如下: {"index":{"_id":"1"}} {"title":"learn es","content":"work hard"} {"index":{"_id":"2"}} {"title":"learn hadoop","content":"work hard"}...如果...

2020-06-04 11:09:53 168

原创 Spark优化——推测执行机制

Spark job中,一个stage什么时候完成,取决于stage下最后一个task的完成时间。task的完成时间也被很多因素影响,比如partition的分配,executor的资源使用情况,host的运行状态,集群网络等等。很多情况下因为运行环境导致的task跑的过慢,或者直接卡死,让task可以重新跑起来是可以缓解这个问题的,也就是Spark中的推测执行机制(speculation)。--conf spark.speculation=true--conf spark.speculation

2020-06-03 17:14:16 211

原创 HiveSql性能优化

一、解决数据倾斜1. 过滤掉null部分key值存在大量空字段,会hash到同一reduce,造成reduce长尾,将null 值过滤掉举例: select user_id from logs where statdate = '20170815' where user_id is not null;2. hive join倾斜:设置join skew参数解决set hive.optimize.skewjoin = true;set hive.skewjoin.key = sk

2020-06-03 16:00:03 199

原创 HiveSql中limit10的坑——对大数据量的表查询加group by

一般查询hive表中某个字段是否存在某个值,会使用如下查询语句select * from 表名 where dt=XXXX and 字段 like '%某个值%' limit 10;这种比较适合hive表数据量较小的情况,出现limit10,hive会默认判断此表数据量不大,只开启一个map进行查询,如果对于大表,比如好几百G上T的数据量,这么大的数据量只开一个map一方面查询慢,另一方面,因为数据量太大容易把机器跑崩。采用以下方式即可,加上group by,然后就会依据hive表的文件

2020-06-03 15:16:16 1307

原创 SparkSubmit提交参数(日常版)

--master yarn--deploy-mode cluster--queue XXXX--name ${spark_job_name}--executor-memory 8G--num-executors 32--executor-cores 4--conf spark.yarn.executor.memoryOverhead=4G--conf "spark.driver.extraJavaOptions=-Dlog4jspark.root.logger=WARN,console".

2020-06-03 15:09:10 79

原创 Spark常用提交脚本

#!/usr/bin/env bashinput="XXXX" output="XXXX"sday="XXXX"id_type="XXXX"tag_origin_short_name="XXXX"name=dataToES_testif [ ! -d "/opt/log/wangxuan/norman/${sday}/${id_type}/${tag_origin_short_name}/sparkESLog" ]; then mkdir -p /opt/log/wangxuan/.

2020-06-03 15:08:51 67

原创 log.info

import org.slf4j.Logger;import org.slf4j.LoggerFactory;logger.info("get records list:{}", JSONHelper.toJSON(userPackageList));

2020-05-22 17:12:02 158

原创 每隔半点清理一次ES缓存脚本

ES清空所有索引的缓存POST _cache/_clearES清空指定索引的缓存POST /{_index}/_cache/_clear通过脚本来清理缓存如下#!/bin/bash# 为防止ES查询缓存过大,每半点清除一次缓存curl -uES访问账号:ES访问密码 -s -XPOST "http://ES访问域名:ES访问密码/_cache/clear"exit 0然后利用crontab控制每隔半点执行一次清理缓存脚本即可*/30 * * * * /全..

2020-05-22 15:48:24 172

原创 运行jar包指定java的主类名,运行其main方法

在jar包中,META-INF目录下,修改MANIFEST.MF文件Manifest-Version: 1.0Main-Class: 主类名全路径

2020-05-21 14:40:23 1030

原创 ES自动负载均衡、分片迁移的表现

当发现某个索引并没有数据写入,但其indexing Rate的数值并不为0 /s的时候,一般是集群在做负载均衡,或者正在给索引添加副本,把该索引的数据,将数据从多数据量的节点,迁移一部分至低数据量的节点。...

2020-05-19 17:42:51 489

原创 ES踩坑——提高写入性能之集群负载均衡

还是往ES集群写入耗时太长,速率太慢的问题,当文档id,即_id自定义指定的情况下,由于每条文档往ES写入时,会对_id进行hash分配其写到哪个节点的主分片上,这样有可能出现写偏了的情况,即集群某台节点的负载特别高,所以一般建议_id让ES自动设置。当集群某台节点负载特别高时,集群会自动进行负载均衡,将某个数据量异常大的主分片数据迁移至其他分片,这个负载均衡过程是很耗集群写入性能的,当多份数据往集群写入时,有可能因为集群的负载均衡占用太多资源,导致写入速率过慢。这种情况可以设置某.

2020-05-18 20:48:47 602

原创 ES踩坑——提高写入性能之合理安排加副本和删索引的时机

问题表现是:ES集群的cpu和负载都非常低,几乎与无数据写入时一致,indexing rate也很低,基本在2000-5000左右;但是此时有6个大数据量的任务在并行往ES集群各自的索引写入,但是耗时都严重变长,比如正常1h运行完毕的写入任务可以变成14h才运行完毕。问题解决如下:正常在ES写入时,会把索引副本关闭,写完后再加副本。但是当多个数据源,同时并行往一个ES集群的多个索引写入数据时,如果流程设计为:数据源写入ES -> 写入完毕 -> 加副本、删除过期索引.

2020-05-18 20:43:36 258

原创 Arrays.asList()将数组转list

if (splitList.contains(tagKey)) { val tmpList = String.valueOf(tagValue).split("\\|").filter(!_.equals("")) tagValueArr.addAll(util.Arrays.asList(tmpList))} else { tagValueArr.add(tagValue)}split拆分出数组,然后ava.util.Arrays.asList(Array),将数组转换成list集合.

2020-05-15 10:51:25 137

原创 Spark flatMap算子扁平化数据

/*4. hive表数据扁平化(画像id,faid)*/val id2ffaid = rawData.flatMap(x => {val arr = x.split(splitType, -1)val mergeId = arr(0)val faid = arr(2)val strs = mergeId.split("\\|", -1)val ids = strsval listBuffer = new ListBuffer[(String, String)]for (i &l.

2020-05-14 16:25:29 202

原创 【Hive】解析json(get_json_object)

get_json_object(string json_string, string path)说明:第一个参数填写json对象变量,第二个参数使用$表示json变量标识,然后用 . 或 [] 读取对象或数组;如果输入的json字符串无效,那么返回NULL。每次只能返回一个数据项。举例:data 为 test表中的字段,数据结构如下:data ={"store": { "fruit":[{"weight":8,"type":"apple"},...

2020-05-11 17:55:45 414

原创 针对ES对于upsert和nested嵌套类型数据支持不友好的一种解决方案

index模式入库ES索引:新写入的文档,会在ES索引中查找_id是否存在,不管存在不存在,都会直接覆盖;upsert模式入库ES索引:新写入的文档,会在ES索引中查询_id是否存在,如果不存在则覆盖,如果存在则取出原始文档里的数据(版本1),补上新增文档的数据,合并后生成的数据(版本2)重新写入_id文档,并同时删掉版本1的文档原始数据。所以ES对于upsert模式更新入库的支持性能并不是很好,数据量小,且索引里没有数据的时候影响不大,但是数据量大,且索引里已经存在数据的时候影响较

2020-05-09 20:52:40 239

原创 Spark调优sc通过textFile读取文件后repartition

在spark中,读取hdfs文件sc.textFile("hdfs路径"),其底层调用的是hadoopFile来获取hdfs路径的数据,1. 对于textFile文件,会做切分,128M一个block,作为一个分区读取过来,形成一个task,2. 对于常见的lzo文件,lzo文件是不支持切分的,所以当一个lzo文件交给一个task去处理时,可能某个lzo文件过大,会导致所有tasks的整体进度被某个task拖慢亲测读取lzo文件,在spark代码中,就算加上切分参数,也不生效(后面是字节数

2020-05-09 20:31:45 668

原创 ES的数据写入原理,refresh和flush

数据写入ES集群,主要是经过以下2个主要步骤:1. 读取数据 -> 验证(master节点分发给data节点处理,或直接访问data节点主分片)2. 同时写入buffer缓冲区和translog日志文件 -> 生成segment file -> 合并小segment file生成大segment file -> 将合并的segment file刷写到系统缓存,此时...

2020-05-07 15:16:43 680

原创 java程序报错Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.util.ReflectionUtil

异常如下:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/logging/log4j/util/ReflectionUtil......Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.util.Reflec...

2020-05-06 10:27:40 2325

原创 Spark程序将Json数据写入ES索引的配置参数详解

1."es.http.timeout" -> "5m""es.http.retries" -> "50"这两个参数是控制http接口层面的超时及重试,覆盖读请求和写请求,默认值比较小,默认超时时间为1分钟,重试次数为3,建议调整为超时时间5分钟,重试次数50次。2."es.nodes.wan.only" -> "true""es.nodes.dis...

2020-04-23 20:00:09 574

原创 Spark程序将Json数据写入ES索引

采用import org.elasticsearch.spark.rdd.EsSpark的相关API,将Json格式的数据写入Es索引中需要引入的依赖在最后面<dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch-hadoop&lt...

2020-04-23 17:46:49 390

原创 Spark将Json数据写入ES报权限错误:action [cluster:monitor/nodes/info] is unauthorized for user

使用org.elasticsearch.spark.rdd.EsSpark的APIEsSpark.saveJsonToEs(mergeData, esIndexName, esConf)将Json数据写入ES集群,报错信息如下:org.elasticsearch.hadoop.rest.EsHadoopInvalidRequest: org.elasticsearch.hadoo...

2020-04-23 17:35:39 563

原创 Mysql中数据存在空格的问题

mysql中存入数据时,是允许带空格的,因此录入数据时需要小心,避免行尾存在空格的情况比如对于下面buyway,光标处可以看到其实多了一个空格从mysql查数的时候,查询的结果如下:{"buyway ":"1","cate ":"1","city":"1","end ":"1","start":"1"}可以看到buyway、cate和end后面都有空格,然后如果判断某个js...

2020-04-22 01:47:07 982

原创 对nested嵌套字段和普通字段,ES数据写入时mapping中未设定也会自动兼容

例如我的mapping中,对于嵌套对象的结构如下:"58sy_activity": { "type": "nested", "properties": { "cooling_score": { "type": "keyword" }, "label_n": { "type": "keyword" }, "tag_valu...

2020-04-21 22:35:19 256

原创 StringBuilder转Json遇到的坑,创建ES索引报index patterns are missing异常

org.json使用的时候,想把jsonString转jsonObject;可以用new JsonObject(String)但是如果用new JsonObject(StringBuilder),转换成的json为空。测试代码如下:public class Test { public static void main(String[] args) { Stri...

2020-04-21 17:36:55 590

原创 Set集合在for循环中调用只生效1次的问题

如果Set集合声明在for循环代码之外,则Set集合的元素在for循环里,只会被调用一遍,调用完毕后,Set集合就释放掉了,测试代码如下:object test { def main(args: Array[String]): Unit = { val jsonstr = "{\"tag_value\":\"9.0\",\"pay_type\":\"a\"}" val j...

2020-04-20 22:30:39 125

原创 Spark和Hive处理数据倾斜的两种解决方案

比如处理80TB的数据,partition数量为15000,理论上平均每个节点是5-6G的数据,但是实际上根据key-value在存储时,很有可能因为某个key的数量特别多,导致数据倾斜。这样就会出现超过物理内存限制的报错。偶尔重试可能会通过,但是会比较不稳定;目前我们这边的两种解决办法是:1. 如果倾斜的key数量比较少,那么过滤出来,对其进行单独处理;2. 如果倾斜的key数量比较多...

2020-04-20 15:02:34 174

原创 IDEA中jar包没有引进来报Cannot resolve symbol解决方案

IDEA莫名其妙的jar包全部识别不了,如下图:对整个项目clean package,然后刷新;或者对当前项目reimport都没用。点击菜单中的 “File” -> “Invalidate Caches / Restart”,然后点击对话框中的 “Invalidate and Restart”,清空 cache 并且重启;也没用。然后对这个链接里的方法全部试了也没用:Int...

2020-04-19 17:13:04 208

原创 mysql更新子查询的某一列值,sql语句写法

首先我依据子查询语句查询出数据:SELECT a.id, a.tag_en, a.tag_value_analysis_type, a.tag_project_id FROM t_smart_tag_meta a INNER JOIN tags_and_attributes_relations ...

2020-04-09 18:22:54 234

原创 spark代码中过滤出异常的数据记录

读取hdfs文件,对每一行做处理,有的行处理的时候,解析不成功,需要导出解析不成功的数据行记录用如下代码:val rowData = sc.textFile(inputPath).filter(x => { val arr = x.split(splitType, -1) val faid = arr(0) val tagkv = arr(1)...

2020-04-08 20:31:43 385

原创 net.sf.json包的json使用时,报JSON keys must be Strings的问题

在spring boot的项目中,由于二次序列化,fastjson解析数据落盘至HDFS路径时,会造成反斜杠\换用net.sf.json.json可以解决这个问题但是net.sf.json.json对于两种json解析不成功,一种是key为"null"的情况,另一种是key中存在\“XXX”反斜杠导致解析不成功的情况报错如下:具体解析使用的是val json = JSON...

2020-04-08 19:35:03 113

原创 HiveSql使用max函数失效的问题,返回结果999

表中一共两个字段,tag_name和tag_value,查询出指定tag_name下,tag_value值最大的记录通过以下sql语句,查询出结果为999,不正常select tag_name, max(a.tag_value) from (select tag_name, tag_value_num fromhdp_teu_dpd_feature_db.da_wanxiang_dr...

2020-03-20 19:40:27 1377 2

原创 Shell脚本判断HDFS路径是否存在,且判断其是否为空(hive表是否没数据)

hadoop命令中,-test的用法-test -[defsz] <path> : Answer various questions about <path>, with result via exit status. -d return 0 if <path> is a directory. -e return 0 if <...

2020-03-15 03:42:03 824 2

原创 限制Spark往HDFS写出数据时,生成_SUCCESS文件

用hive生成数据的时候,是没有_SUCCESS文件的。但是MR和Spark程序落盘后都会有这么个文件,代表程序运行成功。举个例子,比如我们有两个spark任务:A任务和B任务。B任务依赖于A任务,也就是说B任务要根据A任务的结果再判断是否运行。这时我们就可以根据A任务的输出目录下是否有_SUCCESS文件来判断A任务是否运行成功。但是在HDFS数据往Druid里摄入的时候,有_SUC...

2020-03-10 17:55:21 1484

原创 通过Spark任务将数据写入ES报错——ES节点ip错误

报错如下org.elasticsearch.hadoop.rest.EsHadoopNoNodesLeftException: Connection error (check network and/or proxy settings)- all nodes failed; tried [[10.162.7.17:9219, 10.162.7.18:9219, 10.162.7.16:921...

2020-02-28 10:53:26 559

1ARCGIS工具条-启动窗口及主界面的构成|1ARCGIS工具条-启动窗口及主界面的构成.zip

1ARCGIS工具条-启动窗口及主界面的构成,1ARCGIS工具条-启动窗口及主界面的构成,1ARCGIS工具条-启动窗口及主界面的构成

2020-11-19

Navicat12永久激活.zip

一分钟搞定Navicat12激活,操作及其简单,里面一个word一个文件

2019-07-22

win10下编译过的hadoop2.7.2 jar包

win10下编译过的hadoop2.7.2 jar包,配置hadoop客户端环境必备

2018-11-22

空空如也

空空如也

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

TA关注的人 TA的粉丝

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