<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[aline12的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/aline12</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; aline12]]></copyright><item><title><![CDATA[关于spark任务 资源分区优化经验]]></title><link>https://blog.youkuaiyun.com/aline12/article/details/124467762</link><guid>https://blog.youkuaiyun.com/aline12/article/details/124467762</guid><author>aline12</author><pubDate>Thu, 28 Apr 2022 11:15:46 +0800</pubDate><description><![CDATA[最近在进行集群任务的spark任务优化，记录下心得

首先优化的部分 大多是hive任务变成spark任务 原因基本都是因为spark任务容易进行资源管控 不会出现一个任务把资源占了大半的情况

接下来重点说的是有关于如何在资源方面提升任务效率的因素

主要是两个方面 一个是集群方面的物理资源 体现为

spark.instance * cores

另一个是spark任务的逻辑资源 体现为

spark.shuffle.partitions

如果把整个场景比喻为一个办公室 ，那 spark.shuffl]]></description><category></category></item><item><title><![CDATA[关于spark落盘到hdfs的文件分发规则及处理总结]]></title><link>https://blog.youkuaiyun.com/aline12/article/details/123051627</link><guid>https://blog.youkuaiyun.com/aline12/article/details/123051627</guid><author>aline12</author><pubDate>Mon, 21 Feb 2022 17:42:28 +0800</pubDate><description><![CDATA[近期又遇到了不少有关spark/hive表落盘到hdfs的问题，借此机会系统性的记录下学习过程。

此次记录的核心语句就是之前老生常谈的distribute by命令，其后跟的规则不同 会产生截然不同的效果

首先回顾下落盘的过程，每一个reducer都会往某一指定路径下写一个文件，有时候一个reducer只写一个路径，有时候会写多个路径，但核心点在于 每一个reducer只会在某一路径下写一个文件。

我们经常会遇到的小文件过多的问题，以及脚本运行很慢甚至卡死的情况（数据倾斜），其实大多数情况下都和落盘的]]></description><category></category></item><item><title><![CDATA[HIVE表修改列名后 值全变为null]]></title><link>https://blog.youkuaiyun.com/aline12/article/details/122058245</link><guid>https://blog.youkuaiyun.com/aline12/article/details/122058245</guid><author>aline12</author><pubDate>Tue, 21 Dec 2021 11:21:23 +0800</pubDate><description><![CDATA[解决方法：

ALTER TABLE XXX SET TBLPROPERTIES ('parquet.column.index.access'='true');
]]></description><category></category></item><item><title><![CDATA[数据倾斜处理case]]></title><link>https://blog.youkuaiyun.com/aline12/article/details/121955706</link><guid>https://blog.youkuaiyun.com/aline12/article/details/121955706</guid><author>aline12</author><pubDate>Wed, 15 Dec 2021 16:32:08 +0800</pubDate><description><![CDATA[跑批中某脚本一直卡死

排查原因是某一个reducer跑的很慢导致整个任务卡死

继续追踪 是因为groupby 的某个字段出现了数据倾斜

解决方案：

将group by a,b,c 改写成 group by concat(a,b,c) 再嵌套一层sql解析原有字段，成功解决了数据倾斜的问题
...]]></description><category></category></item><item><title><![CDATA[SQL数据倾斜处理]]></title><link>https://blog.youkuaiyun.com/aline12/article/details/121955584</link><guid>https://blog.youkuaiyun.com/aline12/article/details/121955584</guid><author>aline12</author><pubDate>Wed, 15 Dec 2021 16:28:40 +0800</pubDate><description><![CDATA[调度中某跑批脚本出现问题

排查原因发现是某一个reducer卡死了

继续追踪 原因是group by 字段中有一个字段，出现了大量记录集中于一个值上，造成了数据倾斜

解决方案，将group by a,b,c 改写成group by concat(a,b,c) 再嵌套一层解析出原始的三个字段的sql 成功解决了数据倾斜的情况


...]]></description><category></category></item><item><title><![CDATA[hive推送数据到mysql/oracle等数据库问题]]></title><link>https://blog.youkuaiyun.com/aline12/article/details/121625482</link><guid>https://blog.youkuaiyun.com/aline12/article/details/121625482</guid><author>aline12</author><pubDate>Tue, 30 Nov 2021 09:48:30 +0800</pubDate><description><![CDATA[最近在从hive往o'racle推送数据的时候碰到一个问题

明明hive表结构中是bigint的字段 在推送到oracle表中对应的是number(18)的字段

报错

java.lang.ClassCastException: org.apache.hadoop.io.IntWritable cannot be cast to org.apache.hadoop.io.LongWritable

很奇怪 明明没有int的字段 为什么说检测到输入有int类型

最后排查出原因，是因为parquet文件中]]></description><category></category></item><item><title><![CDATA[Datax抽取oracle大表问题]]></title><link>https://blog.youkuaiyun.com/aline12/article/details/121376427</link><guid>https://blog.youkuaiyun.com/aline12/article/details/121376427</guid><author>aline12</author><pubDate>Wed, 17 Nov 2021 13:53:20 +0800</pubDate><description><![CDATA[最近经常用到datax从oracle抽取大表到数仓hive

当表的数据量超过千万 很容易卡住 一直抽不过来

经过测试可以在querysql上加并行抽取

/*+ parallel(n) */ 

基于并行查询要启动并行进程、分配任务与系统资源、合并结果集
一般而言主要在如下情况使用parallel
1.表的数据量很大,超过一千万;
2.数据库主机是多个CPU;
3.系统的当前负载较低;

但这个容易直接把资源占死 导致别人无法抽取业务数据库 需要做测试再正式上线
...]]></description><category></category></item><item><title><![CDATA[关于处理小文件数过多影响sql效率的调优问题]]></title><link>https://blog.youkuaiyun.com/aline12/article/details/119414106</link><guid>https://blog.youkuaiyun.com/aline12/article/details/119414106</guid><author>aline12</author><pubDate>Thu, 05 Aug 2021 13:51:35 +0800</pubDate><description><![CDATA[背景：sparksql执行过程中，发现task数目特别多，大大降低了执行的效率，经排查后发现是某张表的底层文件数过多，且每个文件大小都很小，也就是出现了小文件过多的情况

原理：

此处要区分spark任务和hive任务在落盘时候是不同的

spark任务可以直接通过设定repartition(N)的命令来设置每个分区下的文件数目，同时在sql查询末加上distribute by rand()来避免文件大小不均以及数据倾斜的问题，这里不多描述



hive任务略有不同

首先reducer数目直接影响到的]]></description><category></category></item><item><title><![CDATA[关于map-reduce涉及数据倾斜调优问题]]></title><link>https://blog.youkuaiyun.com/aline12/article/details/118418049</link><guid>https://blog.youkuaiyun.com/aline12/article/details/118418049</guid><author>aline12</author><pubDate>Fri, 02 Jul 2021 16:25:47 +0800</pubDate><description><![CDATA[今天在hive任务跑批碰到了失败的问题，报错基本都是container killed，进一步看了任务日志，发现是某一个reducer失败了 耗时特别长，继续看了是在distribute by 这个算子涉及的MR任务的原因

（一个脚本中会涉及到很多个MR任务）

首先回顾下 distribute by 算子 一般是放在最后写文件 ，比如insert overwrite 操作之后进行，大概有distribute by rand() 和 distribute by partitions，后者一般用于多级分区的.]]></description><category></category></item><item><title><![CDATA[linux运行sh脚本问题]]></title><link>https://blog.youkuaiyun.com/aline12/article/details/117259075</link><guid>https://blog.youkuaiyun.com/aline12/article/details/117259075</guid><author>aline12</author><pubDate>Tue, 25 May 2021 16:32:07 +0800</pubDate><description><![CDATA[在linux运行sh脚本

报错多处显示

$'\r': command not found

原因是因为脚本是用windows编写的

每行结尾是\r\n 的Unix 结果行是\n所以在Linux下运行脚本 会任务\r 是一个字符，所以运行错误



解决办法：

sed -i 's/\r//'脚本名 进行转换就可以了
...]]></description><category></category></item><item><title><![CDATA[hive导出csv文件，打开后出现乱码]]></title><link>https://blog.youkuaiyun.com/aline12/article/details/117065560</link><guid>https://blog.youkuaiyun.com/aline12/article/details/117065560</guid><author>aline12</author><pubDate>Thu, 20 May 2021 10:37:37 +0800</pubDate><description><![CDATA[经常遇见的一个问题 ，hive运行sql导出代码，结果查看出现中文乱码的问题

原因：

hive导出csv默认为utf8的编码，但excel打开csv的格式默认为gbk



解决办法：

在导出文件后，运行如下语句

iconv -f UTF-8 -c -t GBK a.csv &gt; b.csv

a.csv为原来文件，b.csv为gbk编码后文件


...]]></description><category></category></item><item><title><![CDATA[文本文件导入hive库出现问题总结]]></title><link>https://blog.youkuaiyun.com/aline12/article/details/117064437</link><guid>https://blog.youkuaiyun.com/aline12/article/details/117064437</guid><author>aline12</author><pubDate>Thu, 20 May 2021 10:04:53 +0800</pubDate><description><![CDATA[在跑数据时碰到，某个字段的值需要过滤，范围是大概几万个值，就不能直接用枚举了，需要将数据存到一个临时表 然后去读这个表

先建临时表

CREATE EXTERNAL TABLE XXXX(
XX string COMMENT 'XX'
) COMMENT ''
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS parquet
LOCATION
'XXXXX'
TBLPROPERTIES (
'parquet.compress'='SNAPPY]]></description><category></category></item></channel></rss>