<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[iilegend的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/iilegend</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; iilegend]]></copyright><item><title><![CDATA[hive中的json串和map结构的取数区别]]></title><link>https://blog.csdn.net/iilegend/article/details/112680481</link><guid>https://blog.csdn.net/iilegend/article/details/112680481</guid><author>iilegend</author><pubDate>Fri, 15 Jan 2021 17:34:16 +0800</pubDate><description><![CDATA[hive中的json串和map结构的取数区别
hive中如果定义的是json串，那么取数据用这种处理：
 get_json_object(params,'$.user_id')

如果是map&lt;string,string&gt;结构，那么取数据这样处理
params['user_id']

那么我们想要统一将json串转成map结构，便于取数方便。这种怎么处理？
第一种方式就是暴力的解析字符串，用正则的方式匹配：
select 
    pt_day,
    uid,point,
    str_t]]></description><category></category></item><item><title><![CDATA[spark-sql中字段为bigint类型，但是查询用的字符串产生的bug]]></title><link>https://blog.csdn.net/iilegend/article/details/111411817</link><guid>https://blog.csdn.net/iilegend/article/details/111411817</guid><author>iilegend</author><pubDate>Sat, 19 Dec 2020 23:00:07 +0800</pubDate><description><![CDATA[在一次工作实践中，记录了一次我的失误和坑。

首先我这个字段为bigint 类型。
但是我查询的时候 让该字段='123124565434567897654’这种类似的方法查询，发现查询的数据是有问题的。

发现查出来两条，但是前半部分是正常匹配的，只是后面的部分匹配有问题。
后来发现字段类型不匹配，用explain打印出来，发现两边都转成了double，才会导致这个问题。
统一一下字段类型之后数据就是正常的了。详细的问题就是隐式转换的问题了。
具体解释：bigint和string比较时会隐式地都转换成do]]></description><category></category></item><item><title><![CDATA[大数据中用 CONCAT_WS拼接数组]]></title><link>https://blog.csdn.net/iilegend/article/details/111411199</link><guid>https://blog.csdn.net/iilegend/article/details/111411199</guid><author>iilegend</author><pubDate>Sat, 19 Dec 2020 22:42:47 +0800</pubDate><description><![CDATA[之前用CONCAT_WS用的一直都是拼接的字符串，简单提一下用法吧
SELECT
    concat_ws('.', 'www', 'toutiao', 'com', 'cn')

输出的是
www.toutiao.com.cn

这就不具体说了。
需要记录的是CONCAT_WS这个udf中可以传入的是array(string)
具体看一下git的源码：
git的源码注释直接写明第一个参数是分割的字符串，第二个参数是string或者是array数组
需要注意的是这个数组只能是string数组。

再看一下]]></description><category></category></item><item><title><![CDATA[记录 2020-11-18 23点]]></title><link>https://blog.csdn.net/iilegend/article/details/109790894</link><guid>https://blog.csdn.net/iilegend/article/details/109790894</guid><author>iilegend</author><pubDate>Wed, 18 Nov 2020 23:26:38 +0800</pubDate><description><![CDATA[大数据学习进步



有很长时间没有更新博客了，原因是公司很多限制，还有就是大多数都写在公司的文档里面了。

还有一个重要原因，太懒了 。。。。。。。。。。。



痛定思痛，决定学习不能落下，更新博客也不能落下，所以决定至少双周一次学习和记录，对一些详细的知识点包括底层的源码进行一定的分析和学习



okr制定：

每双周一次技术更新！！！
...]]></description><category></category></item><item><title><![CDATA[spark学习进步之广播变量的用法(broadcast)]]></title><link>https://blog.csdn.net/iilegend/article/details/106181884</link><guid>https://blog.csdn.net/iilegend/article/details/106181884</guid><author>iilegend</author><pubDate>Sun, 17 May 2020 22:05:29 +0800</pubDate><description><![CDATA[原理：



问题点

1、参数设置：


			spark.sql.adaptive.join.enabled

			
			
			
			AE 相关，开启后能够根据数据量自动判断能否将 sortMergeJoin 转换成 broadcast join
			
			
			true
			
		
			spark.sql.broadcastTimeout
			
			
			broadcast joins 时，广播数据最长等待时间，网络不稳定时，容易出现超时造成任务失败，可适当增大此参数
			.]]></description><category></category></item><item><title><![CDATA[大数据学习-外部表&内部表详解]]></title><link>https://blog.csdn.net/iilegend/article/details/106150627</link><guid>https://blog.csdn.net/iilegend/article/details/106150627</guid><author>iilegend</author><pubDate>Fri, 15 May 2020 22:11:18 +0800</pubDate><description><![CDATA[外部表和内部表区别和实际运用：

前提知识储备：

1、hive存储的数据在hdfs上，建表的时候实际上是在hdfs上创建目录而已。

2、hive的元数据信息实际上是存在于mysql中（通常的做法）

3、访问hive的数据是先访问元数据再根据元数据的地址信息来获取数据



  外部表和内部表在建表上的区别就是external（代表的外部表），外部表存储的方式是固定的hdfs路径，表是通过映射的方式访问（load数据到表中），而内部表的访问方式就是一个表和一个hdfs对应。所以在删除外部表的时候，...]]></description><category></category></item><item><title><![CDATA[大数据-数据倾斜那些事情]]></title><link>https://blog.csdn.net/iilegend/article/details/105865413</link><guid>https://blog.csdn.net/iilegend/article/details/105865413</guid><author>iilegend</author><pubDate>Thu, 30 Apr 2020 17:57:44 +0800</pubDate><description><![CDATA[在平时处理大数据量的过程中，会遇到很多数据倾斜的问题，在业务中很多坑也都踩过了，特此记录一下。

首先，有很多的数据倾斜是是在业务场景中发生的。
    以订单数据为例，在之前的例行任务中都是正常运行，但是在某一天搞了一个活动，导致某一个商品的订单数据增加了100倍，然后进行一些group等的操作，这种在处理数据的时候会产生数据倾斜，因为同一个key（商品id）都shuffle到同...]]></description><category></category></item><item><title><![CDATA[hive读取json数组并转换成多行（列转行）]]></title><link>https://blog.csdn.net/iilegend/article/details/104635363</link><guid>https://blog.csdn.net/iilegend/article/details/104635363</guid><author>iilegend</author><pubDate>Tue, 03 Mar 2020 17:17:49 +0800</pubDate><description><![CDATA[背景：在读取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...]]></description><category></category></item><item><title><![CDATA[拉链表实现（demo）]]></title><link>https://blog.csdn.net/iilegend/article/details/104513935</link><guid>https://blog.csdn.net/iilegend/article/details/104513935</guid><author>iilegend</author><pubDate>Wed, 26 Feb 2020 11:50:38 +0800</pubDate><description><![CDATA[创建库
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...]]></description><category></category></item><item><title><![CDATA[Hive行转列过程中使用LATERAL VIEW遇到空MAP或者空数组的情况]]></title><link>https://blog.csdn.net/iilegend/article/details/103369309</link><guid>https://blog.csdn.net/iilegend/article/details/103369309</guid><author>iilegend</author><pubDate>Tue, 03 Dec 2019 16:09:48 +0800</pubDate><description><![CDATA[背景：

HIve在进行行转列的过程中，如果遇到转的数组或者MAP()的情况，会出现一种特殊情况，就是数据会消失：

原数据：


  SELECT

      '1' AS id,

      MAP() AS purchase_info

    UNION ALL

    SELECT

      '2' AS id,

 ...]]></description><category></category></item><item><title><![CDATA[Hive表建立分区外部表并且添加每天的增量数据为分区]]></title><link>https://blog.csdn.net/iilegend/article/details/98871171</link><guid>https://blog.csdn.net/iilegend/article/details/98871171</guid><author>iilegend</author><pubDate>Thu, 08 Aug 2019 15:07:16 +0800</pubDate><description><![CDATA[一、数据仓库建设过程中，我们都有每天的增量数据进来，我们需要把增量数据映射到我们的hive表中，但是为了数据能够被其他部门共同使用，并且需要对我们的原始数据进行综合管理，在数据仓库建设的第一层，我们就要使用外部表进行处理。

（外部表和内部表的区别自行查资料）

二、介绍一下怎么从外部的一个文件怎么映射成外部表并且分区，并且数据不会move到hive的相关目录下面。



1、将文件（text...]]></description><category></category></item><item><title><![CDATA[Hive 行转列、列转行]]></title><link>https://blog.csdn.net/iilegend/article/details/97792371</link><guid>https://blog.csdn.net/iilegend/article/details/97792371</guid><author>iilegend</author><pubDate>Tue, 30 Jul 2019 16:45:58 +0800</pubDate><description><![CDATA[在Hive中使用Hive sql实现表 数据的行转列、列转行：

原始数据：



行转列：


select ss.id,ss.name,s1  from test_sql ss
lateral view explode(split(ss.address,',')) aa as s1




列转行：


select sss.id,sss.name,concat_ws(',',collect...]]></description><category></category></item><item><title><![CDATA[Spark Sql 处理groupby 的数据倾斜问题]]></title><link>https://blog.csdn.net/iilegend/article/details/97682621</link><guid>https://blog.csdn.net/iilegend/article/details/97682621</guid><author>iilegend</author><pubDate>Mon, 29 Jul 2019 21:12:26 +0800</pubDate><description><![CDATA[写sql处理使用groupby 产生的数据倾斜问题：


import java.util.Random

import org.apache.spark.sql.SparkSession

object TestUDF {
  def main(args: Array[String]): Unit = {
    val spark =
      SparkSession.builder()
...]]></description><category></category></item><item><title><![CDATA[Spark Core中解决group by造成的数据倾斜问题]]></title><link>https://blog.csdn.net/iilegend/article/details/97676109</link><guid>https://blog.csdn.net/iilegend/article/details/97676109</guid><author>iilegend</author><pubDate>Mon, 29 Jul 2019 20:54:01 +0800</pubDate><description><![CDATA[在大数据开发中，我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜，此时Spark作业的性能会比期望差很多。数据倾斜调优，就是使用各种技术方案解决不同类型的数据倾斜问题，以保证Spark作业的性能。该篇博客参考美团的spark高级版，修改了代码使用了scala写的。

 这个方案的核心实现思路就是进行两阶段聚合。第一次是局部聚合，先给每个key都打上一个随机数，比如...]]></description><category></category></item><item><title><![CDATA[scala，实现case class类的时候 业务字段过多导致的异常。不能超过22个字段]]></title><link>https://blog.csdn.net/iilegend/article/details/94479639</link><guid>https://blog.csdn.net/iilegend/article/details/94479639</guid><author>iilegend</author><pubDate>Tue, 02 Jul 2019 20:36:32 +0800</pubDate><description><![CDATA[一、背景

1、在scala-2.10.x版本种，case class的元素超过22个以后即会编译报错

2、有些业务场景下，需要超过22个元素的值



我们项目当中日志一共有105个字段，在对原始日志进行处理转换成parquet文件的过程中，我们使用的方法是定义一个case class类，将这105个字段封装到这个对象里面，基于这种方式构建的DataFrame。结果运行的时候报错了，之后我们...]]></description><category></category></item><item><title><![CDATA[azkaban设置依赖，并且多个任务并行执行]]></title><link>https://blog.csdn.net/iilegend/article/details/93803163</link><guid>https://blog.csdn.net/iilegend/article/details/93803163</guid><author>iilegend</author><pubDate>Thu, 27 Jun 2019 00:57:41 +0800</pubDate><description><![CDATA[在azkaban的任务调度中，设置依赖可以完成对任务的调度，

脚本如下：

第一个job：命名为  ods_actlog.job


---
config:
  #failure.emails: xx@xx

nodes:
  - name: ods_actlog_sql_job
    type: command
    config:
      command: sh ods_actl...]]></description><category></category></item><item><title><![CDATA[sqoop错误-ERROR manager.SqlManager: Error reading from database: java.sql.SQLException:]]></title><link>https://blog.csdn.net/iilegend/article/details/93546301</link><guid>https://blog.csdn.net/iilegend/article/details/93546301</guid><author>iilegend</author><pubDate>Tue, 25 Jun 2019 00:17:53 +0800</pubDate><description><![CDATA[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...]]></description><category></category></item><item><title><![CDATA[sqoop错误：Access denied for user 'root'@'mini1' (using password: YES)]]></title><link>https://blog.csdn.net/iilegend/article/details/93546008</link><guid>https://blog.csdn.net/iilegend/article/details/93546008</guid><author>iilegend</author><pubDate>Tue, 25 Jun 2019 00:14:51 +0800</pubDate><description><![CDATA[在用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...]]></description><category></category></item><item><title><![CDATA[用sqoop将MySQL的数据导入到Hive分区表中]]></title><link>https://blog.csdn.net/iilegend/article/details/93386535</link><guid>https://blog.csdn.net/iilegend/article/details/93386535</guid><author>iilegend</author><pubDate>Sun, 23 Jun 2019 16:44:21 +0800</pubDate><description><![CDATA[在工作中，我们经常遇到的业务就是要将MySQL每天差生的生产数据定时导入到Hive的分区表中，然后根据分区表中的数据进行“数仓建设”，各种数据处理。

那么怎么运用sqoop将MySQL的数据导入到hive的分区表中呐?

首先，不能再用--hive-table, --hive-partition-key, --hive-partition-value这三个参数。因为这样只能向单个分区导入数据，无...]]></description><category></category></item><item><title><![CDATA[hive分区表中--新增字段，发现数据为null的坑]]></title><link>https://blog.csdn.net/iilegend/article/details/93356072</link><guid>https://blog.csdn.net/iilegend/article/details/93356072</guid><author>iilegend</author><pubDate>Sat, 22 Jun 2019 19:45:54 +0800</pubDate><description><![CDATA[数仓开发过程中，经常会有需求变更，添加字段的情况所在，添加完了字段还需要重新跑数据，重新将这个字段的数据加载进去，但是会出现一个坑就是加载的数据为null。

问题所在：



对于分区表添加字段，向已存在分区中插入数据，结果新增字段的值全部为null。


alter table xunying add colums(name string);

insert overwrite table x...]]></description><category></category></item></channel></rss>