自定义博客皮肤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

爱学习,爱工作,爱生活

  • 博客(283)
  • 资源 (2)
  • 收藏
  • 关注

原创 常用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 4351 1

原创 Hive分区表总结

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

2019-04-28 17:14:23 1271 1

原创 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 3238

转载 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 1482

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

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

2019-01-23 21:44:16 959

原创 pySpark,执行算子show(1)导致并行度不对的问题

也就是说,因为有action算子show(1)的存在,df的repartition和withColumn这两个数据转换算子会得以生效,但是show(1)比较特殊,因为其只需要返回1条数据,所以内部做了优化,只会计算一个分区的数据,然后返回一条到driver端,这也就是为什么在spark的ui中看到这一步骤只有一个task在执行;那剩下7个分区的数据什么时候执行呢?2. spark代码的预加载机制,会在生成dag图时,把代码里的print执行出来,所以并不是print1,udf执行,再print2;

2022-10-26 16:12:31 440

原创 Pycharm Runtime Error R6034解决方法

step4:在DLL列表里找到 “msvcr....dll”,注意看后面的路径,只要不是在“C:\Windows\WinSxS”这个路径下的,都要将其删除或重命名后缀。比如在上面这个图里面,有一个 msvcr90.dll 是在 C:\Users\wangxuan24\Anaconda3\envs\pythonWorkSpace\Library\bin这个目录下的,找到它并将其重命名为 “msvcr90.dll-bak”。,所以需要对每一个错误窗口分别处理,直到Pycharm不报错误。多个错误窗口弹跳出来。

2022-10-17 15:52:19 444

原创 pySpark中udf的使用

传入的col_collect_list是一个数组,由dataframe的sql函数collect_list(col)得到,传入的num是分位数的档,比如95分位就传入95;pyspark中dataframe可以使用很多sql型的函数,比如group by、agg等,函数中经常需要调用自定义的udf函数。定义好函数后,需要注册成udf函数,F.udf()前面是函数名,后面是返回的数据类型。以下面的udf为例,首先定义函数,函数的功能是计算分位数,95不能直接传值,因为udf里的参数必须是一列,所以这里。

2022-10-14 20:52:24 566

原创 hive和mysql中where/group by/order by后跟别名的区分

由于where和group by的执行顺序都在select之前,所以select的别名不可以跟在其之后,order by的执行顺序在select之后,所以order by后可以跟select的别名。两者的区别在于:hivesql中group by后不可跟别名,而mysql中group by后可以跟别名;2. group by和partition by后不可跟别名。1. order by后可以跟别名。1. order by后可以跟别名。2. group by后可以跟别名。3. where后不可跟别名。

2022-10-08 17:19:35 459

原创 pyspark里mapPartitions的用法

111

2022-07-19 19:58:48 642

原创 Mysql5.X实现row_number( ) over( )分组排序

mysql8.0里支持row_number() over (partition by XX order XX) AS rank这种窗口函数,但是mysql早期版本不支持,所以要实现分组排序只能自己写逻辑来实现。这套sql主要利用了mysql两个技术点1. @XX 设置变量2. := 给变量赋值例如这里需要对dt进行分组,然后在每个组内对age进行降序排序,然后计算出排序号-- 1. 窗口函数处理select dt, age, row_number() over(partition

2022-05-09 22:08:09 1538

原创 pyspark中schema设定为integerType时不接受空值

pyspark里首先构建schematable_schema = StructType([ StructField("card_sequence", StringType(), True), StructField("card_id", IntegerType(), True)])StringType类型可以接受null,后面的True表示传入值是否允许为空但是IntegerType类型不能接受null和非int类型值,例如传入空值、"汉字"这种,会判断为异常值,这样通过构建

2022-04-20 20:15:24 431

原创 hive的max()、min()等内置计算函数会自动忽略null

select max(id) from table时,如果字段id中存在空值null,或者字段中全部为空值null,sql语法不会报错,前者会忽略null取个最大值,后者直接max出来的结果就是null

2022-03-25 16:29:59 4027

原创 hive不区分大小写

select 1 AS a, 2 as B, 3 As C from table limit 1;得出结果:a b c1 2 3可以发现,无论是关键词as/AS/As,还是字段B,最后一律都处理成小写了,hive底层不区分大小写,除非用lower uper这种函数强制变大小写...

2022-03-03 16:10:04 2898

原创 hive中left join一对多时,关联顺序不固定

A left join B on A.a = B.b当a与b是一对多时,也就是一条A=a关联多条B=b,关联时候顺序是随机的, a=1 B=1 xxx1 a=1 B=1 xxxx2 a=1 B=1 xxxxx3也可能变成 a=1 B=1 xxxx2 a=1 B=1 xxx1 a=1 B=1 xxxxx3每次重跑其顺序不固定,可见left join的时候出现一对多时,关联顺序是随机的。...

2022-03-02 20:22:22 1504

原创 公司udw平台的坑记录

1. udw上的数据托管,删除元数据同时会删除表数据,如果表数据是关联的hdfs路径,那会直接把hdfs路径删了。所以ods层关联hdfs,ods层表不能勾选数据托管。2.udw上的表修改元数据,如果表的字段顺序变化(中间插入或者删除字段),select的字段映射的字段列也会出错,所以如果udw表字段的发生顺序变化,需要重跑数据,除非在表最后添加字段,这样不影响历史数据。...

2022-03-02 20:16:24 67

原创 hive对字段去除空格trim()函数

hive对字段去空格的函数一共3个:1. ltrim(string):去掉字段的前置空格2. rtrim(string):去掉字段的后置空格3. trim(string):去掉字段首尾空格ps:以上三个函数不会去除字段中间的空格!对null也可以使用,trim(空字段)最终返回还是nullps:nvl(trim(A), 1)可以共用,当字段A为空时,最终输出还是1...

2022-03-02 20:13:44 7425

原创 pyspark给hive表增加自增列

一般增加自增列可以考虑row_number() over(partition by XX order by XX) as rank但是需要给hive表全局加上自增列,并且没有字段可供排序时,partition by和order by后无表字段可用。这种情况只能考虑用row_number() over(order by 1),即每一行记录多出个1,然后对1进行排序,取排序号作为自增id列,但是这样结果会出现一个问题:记录结果会被打乱,因为无论spark还是mr本质是分布式进行的,运行多个task,

2022-02-24 22:31:58 812

原创 hive关联外部表的注意事项

一、hive关联外部表ALTER TABLE XXX DROP IF EXISTS PARTITION (event_day='{YESTERDAY}');ALTER TABLE XXX ADD IF NOT EXISTS PARTITION(event_day='{YESTERDAY}') LOCATION 'XXX';1. hdfs文件和hive表的存储类型、分隔符必须一致,不然报错。2. hdfs上按照分隔符分割后,比如有20个字段,hive表有16个字段,那么映射会成功,但是只映射前面

2022-02-23 15:27:53 528 1

原创 insert overwrite之前先删除分区

采用spark引擎跑sql,insert overwrite select方式覆盖写数据表时,spark某些版本覆盖写不会重置表的schema;所以建议如果数据表中间有插入新字段,schema改变的话,覆盖写数据之前先删除分区ALTER TABLE udw_ns.default.XXX DROP IF EXISTS PARTITION (event_day='{YESTERDAY}');insert overwrite XXX select ......

2022-02-18 11:14:25 1256

原创 hive中聚合函数的参数需要是数值类型

对于hive中的聚合函数,以及大小比较,例如max、min、count、sum、>、<、=等与java一致,如果max(字符串),会按照字典序进行比较,所以如果要对字段进行数值比较,该字段必须设置为int、float、bigint、double等数值类型,不要设置成string或者cast(XX as int)转一下也可以...

2022-02-17 14:53:44 704

原创 hive里比较数值大小

数值大小的比较,字段类型必须是int或者bigint,不能是stringstring可以比较 =,是否为某个值string比较大小时是按照字典序排的,例如select 9 < 15trueselect '9' < '15'false因为字典序比较大小时,9大于1,所以'9' > '15'...

2022-02-15 17:45:54 2307

原创 hive支持in (select from ....)子查询的用法

hive支持in的查询用法有两种:1. in (1,2,3 ...)2. in(select from ...)

2022-02-14 20:23:42 1803

原创 HiveSql里group by和order by连用的注意事项

hive的语句执行顺序是group by ... select ... order byorder by是对前面查询到的结果进行排序,两者连用的语法顺序即 select ... group by ... order by注意事项有两点:1. order by的字段必须是在group by中,或者是聚合函数1. select file1,file2 from tableName group by file1,file2 order by file1;2. select file1, cou

2022-02-11 16:29:33 2190

原创 hive的随机函数rand()

语法: rand(),rand(int seed)函数返回值: double随机数说明:返回一个0到1范围内的随机数。若是指定种子seed,则会等到一个稳定的随机数序列。> select rand(); 0.9629742951434543> select rand(0); 0.8446490682263027> select rand(null); 0.8446490682263027ps:如果想要取的0-9或者1-10之间的随机数,x10后向下向上取整即可

2022-02-07 15:25:33 6657

原创 HDFS文件映射成Hive外部表的注意事项

hdfs文件映射生成hive外部表时,本质是文件的序列化和反序列化ALTER TABLE XXX ADD IF NOT EXISTS PARTITION(event_day='{YESTERDAY}') LOCATION 'HDFS路径';需要注意两点:1. hdfs文件和hive表的存储格式必须一致,如果hdfs是text格式,hive表是orc格式,数据关联不上,映射不过来2. hdfs文件和hive表的分隔符必须一致,否则解析错误,hive的分隔符需要注意\t和\001(对应代码

2022-01-30 15:41:58 1410

原创 HDFS数据存储,文件块与spark的分区概念

HDFS中数据以文件块的形式存储在DataNode上,比如一个1GB的数据文件,会切分成多个128M的文件块,数据写入存储的时候,每个128M文件块会存放在一个DataNode上,同时通过机架感知,在最近的两个DataNode节点上分别存放2个副本文件。ps:极限情况,如果128M文件块的个数超过DataNode的个数,会随机选出DataNode存放多余的文件块,但是一个128M文件块只存储在一个DataNode中,机架感知出最近的两个DataNode存放其副本。这样spark在读取HD

2022-01-05 12:21:06 929

原创 Mysql联合索引的生效方式,最左前缀匹配

1. 我们先创建表create table test( a int , b int, c int, d int, key index_abc(a,b,c) )engine=InnoDB default charset=utf8;2. 插入一些数据DROP PROCEDURE IF EXISTS proc_initData;DELIMITER $CREATE PROCEDURE proc_initData()BEGINDECLARE i INT DEFAULT 1;WHILE i&

2021-12-28 10:31:22 511

原创 group by多个字段的顺序和分块问题/hive spark合并输出文件

group by A,B,CABC的先后,对查询的最终结果值没有影响;但是分组排序的逻辑是:先按照A进行字典排序,默认升序,然后当A相同时,对B进行字典排序,默认升序,最后当B相同时,对C进行字典排序,默认升序。所以ABC的分组字段先后顺序,对排序结果有影响,但是对最终查询的结果数值没有影响...

2021-11-28 15:17:02 3196

原创 orderby多个字段的排序问题

Hql语句:SELECT *FROM Topic t WHERE t.id >2 ORDER BY t.type,t.number DESC依据sql的执行顺序,from---where---select---order by假设where t.id>2之后的结果如下则通过对t.type进行降序排序后结果为:再通过对t.number进行降序排序后结果为:很明显,order by type, number在保持满足对type排序的前提下,即当type字段...

2021-11-28 15:08:23 763

原创 Hive中主流文件存储和压缩格式测试

Hive支持的数据表的存储数据格式,主要有四种:行式存储:textFile、SequenceFile列式存储:orc、parquet一、测试4种存储格式的压缩比测试数据log.data,查看属性为18.1MB1. textFile格式textfile格式是hive表存储的默认格式,数据不做压缩,磁盘开销大,数据解析开销大。(1)创建表,存储格式为textfilecr...

2021-11-28 14:59:14 194 1

原创 HBase的Shell操作,修改版本值

HBase中通过rowkey和列族CF确定的一个数据存储单元称成CellRowKey Time Stamp CF1 CF2 CF3 t6 CF2:q2=v2 CF3:q3=v311248112 t3 t1 CF1:q1=v1首先,版本是针对列族CF而言的,每个Cell都会保存同一份数据的多个版本,也就是

2021-11-13 16:23:38 2772

原创 hivesql是如何转化为MR任务的?以join、group by、distinct来说明原理

(1)hive并不是所有的查询都需要走MRhive的优化中fetch抓取,就是修改配置文件参数hive.fetch.task.conversion为more这样全局查找、字段查找、过滤查询、limit查询,都不会走MR,直接fetch抓取,提高查询效率(其余的还是走MR)ps:该参数设置为none时,所有任务转化为MR,一般默认是more(2)hive中需要走MR的sql,通常涉及key的shuffle,比如join、group by、distinct等以下参照链接:HiveSQL转化

2021-10-10 18:50:52 1539

原创 使用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 1009

原创 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 770

原创 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 472

原创 Druid查询标签的各标签值uv及合并uv

一、Druid查询某一标签,各标签值的uv{ "queryType":"groupBy", "dataSource":"XXXX_enum_metric", "granularity":"DAY", "filter":{ "type":"and", "fields":[ { "type":"selector", "dimension":"tag_name", "value": "...

2020-06-03 15:46:25 133

原创 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 5420

原创 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 345

原创 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 414

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

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

2020-11-19

win10下编译过的hadoop2.7.2 jar包

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

2018-11-22

空空如也

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

TA关注的人

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