自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(195)
  • 资源 (1)
  • 收藏
  • 关注

原创 hive中的json串和map结构的取数区别

hive中的json串和map结构的取数区别hive中如果定义的是json串,那么取数据用这种处理: get_json_object(params,'$.user_id')如果是map<string,string>结构,那么取数据这样处理params['user_id']那么我们想要统一将json串转成map结构,便于取数方便。这种怎么处理?第一种方式就是暴力的解析字符串,用正则的方式匹配:select pt_day, uid,point, str_t

2021-01-15 17:34:16 3627 2

原创 spark-sql中字段为bigint类型,但是查询用的字符串产生的bug

在一次工作实践中,记录了一次我的失误和坑。首先我这个字段为bigint 类型。但是我查询的时候 让该字段='123124565434567897654’这种类似的方法查询,发现查询的数据是有问题的。发现查出来两条,但是前半部分是正常匹配的,只是后面的部分匹配有问题。后来发现字段类型不匹配,用explain打印出来,发现两边都转成了double,才会导致这个问题。统一一下字段类型之后数据就是正常的了。详细的问题就是隐式转换的问题了。具体解释:bigint和string比较时会隐式地都转换成do

2020-12-19 23:00:07 3087 1

原创 大数据中用 CONCAT_WS拼接数组

之前用CONCAT_WS用的一直都是拼接的字符串,简单提一下用法吧SELECT concat_ws('.', 'www', 'toutiao', 'com', 'cn')输出的是www.toutiao.com.cn这就不具体说了。需要记录的是CONCAT_WS这个udf中可以传入的是array(string)具体看一下git的源码:git的源码注释直接写明第一个参数是分割的字符串,第二个参数是string或者是array数组需要注意的是这个数组只能是string数组。再看一下

2020-12-19 22:42:47 1200 1

原创 记录 2020-11-18 23点

大数据学习进步有很长时间没有更新博客了,原因是公司很多限制,还有就是大多数都写在公司的文档里面了。还有一个重要原因,太懒了 。。。。。。。。。。。痛定思痛,决定学习不能落下,更新博客也不能落下,所以决定至少双周一次学习和记录,对一些详细的知识点包括底层的源码进行一定的分析和学习okr制定:每双周一次技术更新!!!...

2020-11-18 23:26:38 152 3

原创 spark学习进步之广播变量的用法(broadcast)

原理:问题点1、参数设置: spark.sql.adaptive.join.enabled AE 相关,开启后能够根据数据量自动判断能否将 sortMergeJoin 转换成 broadcast join true spark.sql.broadcastTimeout broadcast joins 时,广播数据最长等待时间,网络不稳定时,容易出现超时造成任务失败,可适当增大此参数 .

2020-05-17 22:05:29 1663

原创 大数据学习-外部表&内部表详解

外部表和内部表区别和实际运用:前提知识储备:1、hive存储的数据在hdfs上,建表的时候实际上是在hdfs上创建目录而已。2、hive的元数据信息实际上是存在于mysql中(通常的做法)3、访问hive的数据是先访问元数据再根据元数据的地址信息来获取数据 外部表和内部表在建表上的区别就是external(代表的外部表),外部表存储的方式是固定的hdfs路径,表是通过映射的方式访问(load数据到表中),而内部表的访问方式就是一个表和一个hdfs对应。所以在删除外部表的时候,...

2020-05-15 22:11:18 2466

原创 大数据-数据倾斜那些事情

在平时处理大数据量的过程中,会遇到很多数据倾斜的问题,在业务中很多坑也都踩过了,特此记录一下。首先,有很多的数据倾斜是是在业务场景中发生的。 以订单数据为例,在之前的例行任务中都是正常运行,但是在某一天搞了一个活动,导致某一个商品的订单数据增加了100倍,然后进行一些group等的操作,这种在处理数据的时候会产生数据倾斜,因为同一个key(商品id)都shuffle到同...

2020-04-30 17:57:44 334

原创 hive读取json数组并转换成多行(列转行)

背景:在读取hive表中某一些字段的时候,有的json字符串其中会包括数组,那么想要读取这个数组并且转换为多行该怎么操作那?操作:1、数据举例:["[{\"pet_skill_avg_level\":0,\"pet_guard_star\":0,\"pet_type\":0,\"pet_step\":0,\"pet_skill_num\":0,\"pet_adv_score\":0,\"p...

2020-03-03 17:17:49 4841

原创 拉链表实现(demo)

创建库create database shop_ods;创建订单增量分区表(每天一个分区)CREATE TABLE shop_ods.ods_orders_inc (orderid INT,createtime STRING,modifiedtime STRING,status STRING) partitioned by(day string )row format del...

2020-02-26 11:50:38 1261

原创 Hive行转列过程中使用LATERAL VIEW遇到空MAP或者空数组的情况

背景:HIve在进行行转列的过程中,如果遇到转的数组或者MAP()的情况,会出现一种特殊情况,就是数据会消失:原数据: SELECT '1' AS id, MAP() AS purchase_info UNION ALL SELECT '2' AS id, ...

2019-12-03 16:09:48 1160

原创 Hive表建立分区外部表并且添加每天的增量数据为分区

一、数据仓库建设过程中,我们都有每天的增量数据进来,我们需要把增量数据映射到我们的hive表中,但是为了数据能够被其他部门共同使用,并且需要对我们的原始数据进行综合管理,在数据仓库建设的第一层,我们就要使用外部表进行处理。(外部表和内部表的区别自行查资料)二、介绍一下怎么从外部的一个文件怎么映射成外部表并且分区,并且数据不会move到hive的相关目录下面。1、将文件(text...

2019-08-08 15:07:16 1385

原创 Hive 行转列、列转行

在Hive中使用Hive sql实现表 数据的行转列、列转行:原始数据:行转列:select ss.id,ss.name,s1 from test_sql sslateral view explode(split(ss.address,',')) aa as s1列转行:select sss.id,sss.name,concat_ws(',',collect...

2019-07-30 16:45:58 203 1

原创 Spark Sql 处理groupby 的数据倾斜问题

写sql处理使用groupby 产生的数据倾斜问题:import java.util.Randomimport org.apache.spark.sql.SparkSessionobject TestUDF { def main(args: Array[String]): Unit = { val spark = SparkSession.builder()...

2019-07-29 21:12:26 1457

原创 Spark Core中解决group by造成的数据倾斜问题

在大数据开发中,我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜,此时Spark作业的性能会比期望差很多。数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业的性能。该篇博客参考美团的spark高级版,修改了代码使用了scala写的。 这个方案的核心实现思路就是进行两阶段聚合。第一次是局部聚合,先给每个key都打上一个随机数,比如...

2019-07-29 20:54:01 1409

原创 scala,实现case class类的时候 业务字段过多导致的异常。不能超过22个字段

一、背景1、在scala-2.10.x版本种,case class的元素超过22个以后即会编译报错2、有些业务场景下,需要超过22个元素的值我们项目当中日志一共有105个字段,在对原始日志进行处理转换成parquet文件的过程中,我们使用的方法是定义一个case class类,将这105个字段封装到这个对象里面,基于这种方式构建的DataFrame。结果运行的时候报错了,之后我们...

2019-07-02 20:36:32 1967 1

原创 azkaban设置依赖,并且多个任务并行执行

在azkaban的任务调度中,设置依赖可以完成对任务的调度,脚本如下:第一个job:命名为 ods_actlog.job---config: #failure.emails: xx@xxnodes: - name: ods_actlog_sql_job type: command config: command: sh ods_actl...

2019-06-27 00:57:41 9412 3

原创 sqoop错误-ERROR manager.SqlManager: Error reading from database: java.sql.SQLException:

ERROR manager.SqlManager: Error reading from database: java.sql.SQLException: Streaming result set com.mysql.jdbc.RowDataDynamic@5119fb47 is still active. No statements may be issued when any stre...

2019-06-25 00:17:53 1225

原创 sqoop错误:Access denied for user 'root'@'mini1' (using password: YES)

在用sqoop将MySQL的数据导入到hive中的时候出现的错误:ERROR manager.SqlManager: Error executing statement: java.sql.SQLException: Access denied for user 'root'@'mini1' (using password: YES)java.sql.SQLException: Acce...

2019-06-25 00:14:51 843

原创 用sqoop将MySQL的数据导入到Hive分区表中

在工作中,我们经常遇到的业务就是要将MySQL每天差生的生产数据定时导入到Hive的分区表中,然后根据分区表中的数据进行“数仓建设”,各种数据处理。那么怎么运用sqoop将MySQL的数据导入到hive的分区表中呐?首先,不能再用--hive-table, --hive-partition-key, --hive-partition-value这三个参数。因为这样只能向单个分区导入数据,无...

2019-06-23 16:44:21 1692

原创 hive分区表中--新增字段,发现数据为null的坑

数仓开发过程中,经常会有需求变更,添加字段的情况所在,添加完了字段还需要重新跑数据,重新将这个字段的数据加载进去,但是会出现一个坑就是加载的数据为null。问题所在:对于分区表添加字段,向已存在分区中插入数据,结果新增字段的值全部为null。alter table xunying add colums(name string);insert overwrite table x...

2019-06-22 19:45:54 3543

原创 hive实现全自动动态分区

我们在业务中往往会遇到一种情况就是:现有的业务已经有很多的数据堆积,并且需要根据现有的数据以分区的形式来建立数据仓库,这样的话就需要将表中的一个字段作为分区字段,以这个字段的值作为分区的依据。那么就需要动态分区进行处理:首先需要设置参数:-- 表示开启动态分区功能 (默认false)set hive.exec.dynamic.partition =true--(默认st...

2019-06-22 19:12:41 6008

原创 hive之union、union all的列名不统一的记录

在MySQL中,union和union all中,只需要列的数量对应,这样就可以完成union和union all操作。但是在hive中,我也是这样想的,于是,我并没有关注列名必须一致,只是关注了列数量一致,这样的话,其实也是可以的,比如:--不同渠道的目标客户量select 'sources' as type,sources as type_detail,count(*) as c...

2019-06-22 18:08:26 12260

原创 hive优化之谓词下推

所谓hive中的谓词下推指的是:hive中join操作:如果直接两个表进行join,在最后再进行两个表的where条件过滤,这样的话实际上hive会将两个表先join起来,最后join出来的大表再进行where筛选,这样的话导致了全表join并且效率低下:如下:select a.id,a.value1,b.value2 from table1 a left outer join...

2019-06-22 16:47:24 2424

原创 数仓项目中azkaban的工作错误总结!

一、写成的sql文件提交到azkaban中,进行任务调度:博客中有对azkaban的学习,可以看一下,这里主要记录一下azkaban的坑1、调度文件:*.job,这个文件以.job结尾,其中,格式是这样的:---config: #failure.emails: xx@xxnodes: - name: dm_release_customer_cube_sql_job...

2019-06-18 21:44:50 953

原创 hive中根据身份证号码获取年龄、性别

select id_no, id_no, case when length(id_no) = 18 then floor(datediff( from_unixtime(unix_timestamp(),'yyyy-MM-dd'), concat_ws('-',substr(id_no,7,4),substr(id_...

2019-06-17 20:47:23 2809

原创 Azkaban错误:User xml file home/bigdata/cluster/azkaban/server/conf/azkaban-users.xml doesn't exist.

安装azkaban过程中启动相关的服务出现错误:bigdata@linux server]$ bin/azkaban-web-start.sh Using Hadoop from Using Hive from bin/..:bin/../lib/azkaban-2.5.0.jar:bin/../lib/commons-collections-3.2.1.jar:bin/../lib...

2019-06-17 19:02:11 373

原创 Spark和MR对比

MR的迭代:Spark中的迭代:1、spark把运算的中间数据存放在内存,迭代计算效率更高;mapreduce的中间结果需要落地,需要保存到磁盘,这样必然会有磁盘io操做,影响性能。2、spark容错性高,它通过弹性分布式数据集RDD来实现高效容错,RDD是一组分布式的存储在节点内存中的只读性质的数据集,这些集合是弹性的,某一部分丢失或者出错,可以通过整个数据集的计算流程的血...

2019-06-14 11:01:40 1463

原创 Spark-wordcount案例

def main(args: Array[String]): Unit = { //创建一个配置信息对象 //设置应用程序名称 val config:SparkConf = new SparkConf().setAppName("scala_worldcount") //设置运行模式 /* * local:使用本地一个线程模拟集群执行任...

2019-06-14 10:46:12 152

原创 spark——比较map和mapPartitions

Spark中,最基本的原则,就是每个task处理一个RDD的partition。MapPartitions操作的优点:如果是普通的map,比如一个partition中有1万条数据;ok,那么你的function要执行和计算1万次。但是,使用MapPartitions操作之后,一个task仅仅会执行一次function,function一次接收所有 的partition数据。只要执行一次...

2019-05-31 00:43:59 522

原创 hive语句练习50题

数据:student表s_id s_name s_birth s_sex01 赵雷 1990-01-01 男02 钱电 1990-12-21 男03 孙风 1990-05-20 男04 李云 1990-08-06 男05 周梅 1991-12-01 女06 吴兰 1992-03-01 女07 郑竹 1989-07-01 女08 王菊 1990-01-20 女course...

2019-05-18 18:08:02 1674 1

原创 HIVE中常见函数记录

1、URL解析函数parse_url(url, partToExtract[, key])解析URL字符串,partToExtract的选项包含[HOST,PATH,QUERY,REF,PROTOCOL,FILE,AUTHORITY,USERINFO]备注:partToExtract的选项必须是大写!小写不报错但是数据为NULL。select parse_url('https:...

2019-05-18 17:33:24 158

原创 Hive中时间格式的相关转换

1、获取当前的时间戳select unix_timestamp() from dim_kpi;2、时间戳转时间备注:转化UNIX时间戳(从1970-01-0100:00:00 UTC到指定时间的秒数)到当前时区的时间格式select from_unixtime(1558166130,'yyyy-MM-dd HH:mm:ss') from dim_kpi;3、日期...

2019-05-18 16:21:13 1872

原创 算法_冒泡排序

对数组中的数据进行排序,使用冒泡排序算法进行排序:public static void Bubble(int[] array){ //冒泡实现排序 for (int i = 0;i < array.length-1;i++){ for (int j = 0; j< array.length-1-i;j++){ ...

2019-05-15 22:02:15 91

原创 exception “GC Overhead limit exceeded错误:生成大于1.5G的数据,导入 数据量非常大,可能会导致一个错误

错误:exception “GC Overhead limit exceeded原因:Why Sqoop Import throws this exception?The answer is – During the process, RDBMS database (NOT SQOOP) fetches all the rows at one shot and tries to load ...

2019-05-12 17:33:51 1796

原创 hive 动态分区(Dynamic Partition)异常处理 [Error 20004]

在hive中创建动态分区,将数据导入的过程中,出现的问题: 数据导入失败FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask这个问题主要原因就是动态分区的数量没有达到要求,应该分区的数量设置多一些Your Hive job tried to create ...

2019-05-12 17:29:45 1220

原创 运行sqoop的job时,需要输入密码,通过配置文件来避免输入密码

sqoop执行任务是需要输入密码,需要建立密码文件并指定--password-file文件,文件需要存放在hdfs之上,权限为400echo -n "123456" > sqoopPWD.pwdhdfs dfs -mkdir -p /sqoop/pwdhdfs dfs -put sqoopPWD.pwd /sqoop/pwdhdfs dfs -chmod 400 /sqoop/p...

2019-05-10 22:09:26 628

原创 sqoop导入、导出数据,运行为job方式

上一篇文章提到sqoop的导入导出的相关案例,这些案例需要个人来进行执行,效率低并且有可能出现问题那么,我们可以将sqoop以job的形式来运行,来提高效率:sqoop job方式设置导数据:sqoop job \--create gp1919_bap_user \-- import \--connect jdbc:mysql://mini4:3306/qfbap_od...

2019-05-10 21:25:05 307

原创 SQOOP导入、导出数据相关案例

1、全量导入数据:mysql -> hive中sqoop import \--connect jdbc:mysql://hadoop01:3306/qfbap_ods \--driver com.mysql.jdbc.Driver \--username root \--password 123456 \--table user \--hive-import \--hiv...

2019-05-10 21:19:07 181

原创 sqoop报错以及解决:Access denied for user 'root'@'172.16.21.22' (using password: YES)

在使用sqoop进行导入导出的时候出现了错误:Warning: /apps/sqoop-1.4.6-cdh5.13.2/../hcatalog does not exist! HCatalog jobs will fail.Please set $HCAT_HOME to the root of your HCatalog installation.Warning: /apps/s...

2019-05-10 20:13:35 4219 2

原创 hive的索引:

hive的索引:索引是数据库的一种标准技术,hive在0.7版本以后支持索引,只不过hive的索引的性能要比关系型数据库的差优点:提高查询效率,避免全表扫描缺点:冗余存储,加载数据较慢索引文件的特点:索引数据有序,并且数据量较小索引的参数(关键字)index如何创建一个索引create table if not exists text3asselect * f...

2019-04-22 21:16:39 440 1

apache-tomcat-7.0.72(32位+64位)解压即可使用

apache-tomcat-7.0.72,其中包括了32位和64位操作系统,下载即可直接使用。

2018-04-28

空空如也

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

TA关注的人

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