Hive & Sql & Spark
文章平均质量分 59
bigdata
sdbhewfoqi
这个作者很懒,什么都没留下…
展开
-
【Pandas】常用api(加精)
特征工程制作特征时常用的pandas api原创 2023-11-07 10:59:26 · 357 阅读 · 0 评论 -
【pyspark】expected zero arguments for construction of ClassDict
net.razorvine.pickle.PickleException: expected zero arguments for construction of ClassDict (for json.decoder.JSONDecodeError)原创 2023-10-31 17:54:12 · 377 阅读 · 0 评论 -
【Spark】配置参数关系-重要
eg:资源配置10个Executor节点,每个节点2个Core,那么同一时间可以并行计算的task数为20,如果RDD有2个分区,那么计算时只使用2个Core,其余18个Core空转,浪费资源,每个Executor中的一个Core(线程,虚拟核数)同时只能执行一个Task,所以Spark调优中会通过增大RDD分区数,增大任务并行度来提高效率。并行度指所有Executor可以同时执行的Task数,如果RDD有100个分区,那么需要5轮计算完毕,原创 2023-10-27 16:32:02 · 960 阅读 · 0 评论 -
【Hive】drop table需注意外部表
ALTER TABLE tb_nameSET TBLPROPERTIES('EXTERNAL' = 'FALSE');原创 2023-09-05 19:42:13 · 527 阅读 · 0 评论 -
【Pandas】dataframe互转
不加字典,则list的内容是行内容;加字典,则list的内容是列内容。如果此时转置会变成这样,原创 2023-07-06 14:09:11 · 1356 阅读 · 0 评论 -
【Pandas】Python中None、null和NaN
经常混淆。空值一般表示数据未知、不适用或将在以后添加数据。缺失值指数据集中某个或某些属性的值是不完整的。一般空值使用None表示,缺失值使用NaN表示。注意: python中没有null,但是有和其意义相近的None。原创 2023-03-28 20:49:05 · 5456 阅读 · 0 评论 -
【Pandas】列名不同关联两个dataframe
简单来说就是重命名其中一个列名,保持相同的列名进行关联。文章说这种left_on,right_on没有用。原创 2023-02-10 11:00:13 · 1231 阅读 · 0 评论 -
【Pandas】筛选某列过滤
找出符合第二列筛选条件的index(这里index不是0-n,而是刚才value_counts()的index)原创 2022-12-27 12:29:23 · 1443 阅读 · 0 评论 -
【hive】Use CodedInputStream.setSizeLimit() to increase the size limit
【代码】【hive】Use CodedInputStream.setSizeLimit() to increase the size limit。原创 2022-12-23 15:25:42 · 229 阅读 · 0 评论 -
【pyspark】常用api(1)
返回自身未包含在其他值中的每个值。的行为是删除左数据帧中的行的所有实例(如果存在于右数据帧中)。数据帧,nsdf,我想对它进行5%的采样。nsdf样本sdf是这样的 sdf = nsdf.sample(0.05)然后我想从nsdf中删除sdf中的行。现在,我想我可以使用,但这将删除nsdf中与sdf中任何行匹配的所有行。例如,如果sdf包含中的每一行都将被删除,因为它们都是7或8。有没有办法只删除sdf中出现的7/8(或任何其他)的数量?更具体地说,在这个例子中,我希望最后得到一个nsdf。原创 2022-12-14 14:58:38 · 351 阅读 · 0 评论 -
【Pandas】sum与count
sum与count原创 2022-11-30 18:27:47 · 567 阅读 · 0 评论 -
【Spark】底层执行任务逻辑
持续更新,直到写出每个环节的关系。【spark广播】一、使用广播变量的好处1、Driver每次分发任务的时候会把task和计算逻辑的变量发送给Executor。不使用广播变量,在每个Executor中有多少个task就有多少个Driver端变量副本。这样会导致消耗大量的内存导致严重的后果。2、使用广播变量的好处,不需要每个task带上一份变量副本,而是变成每个节点的executor才一份副本。这样的话, 就可以让变量产生的副本大大减少;二、广播变量的原理广播变量,初始的时候,就在Dr原创 2021-11-15 16:46:43 · 1464 阅读 · 0 评论 -
【Spark】spark dataframe与pandas dataframe转换
spark dataframe与pandas dataframe原创 2021-10-13 23:05:03 · 4848 阅读 · 0 评论 -
【pandas】get_dummies将类别特征转为onehot
今天又学了一招,pandas将str类型的类别特征,转为one-hot。注意一定要是str类型,int类型报错。pandas.get_dummies 的用法_数据分析-CSDN博客get_dummies 是利用pandas实现one hot encode的方式。详细参数请查看官方文档官方文档在这里pandas.get_dummies(data, prefix=None, prefix_sep='_', dummy_na=False, columns=None, sparse=Fals原创 2021-10-13 22:14:52 · 513 阅读 · 0 评论 -
【Spark】mapreduce任务参数优化
1、GC首先确定是map阶段gc,还是reduce阶段gc。reduce阶段gc,则set mapreduce.reduce.cpu.vcores=当前值*2;set mapreduce.reduce.memory.mb=当前值*2;set mapreduce.reduce.java.opts=当前值*2;map阶段gc,则mapreduce.map.cpu.vcores=当前值*2;mapreduce.map.memory.mb=当前值*2;mapreduce.map.ja原创 2021-09-22 18:34:24 · 2230 阅读 · 0 评论 -
【Hive】修改 table、column
目录一、表二、列三、分区一、表1、重命名表重命名表的语句如下:ALTER TABLE table_name RENAME TO new_table_name2、修改表属性:ALTER TABLE table_name SET TBLPROPERTIES (property_name = property_value, property_name = property_value,... )3、修改表注释ALTER TABLE table_name SET TBL原创 2021-08-16 17:36:29 · 5405 阅读 · 0 评论 -
【Hive】Java实现Hive的UDF
IDEA如何将写好的java类(UDF函数)打成jar包上传linuxHive UDF函数开发使用样例hive 自定义udf函数注册(永久注册)Java实现Hive的UDF(案例)package com.jd.dazhanghao;import org.apache.hadoop.hive.ql.exec.UDF;import java.sql.Date;import java.text.SimpleDateFormat;public class SysDateUDF ext原创 2021-07-12 11:07:52 · 406 阅读 · 0 评论 -
【Spark】广播变量
目录广播变量是什么?为什么要有广播变量的存在?广播变量的原理广播变量是什么?为什么要有广播变量的存在?默认情况下,task执行的算子中,使用了外部的变量,每个task都会获取一份变量的副本,有多少task就会有多少副本,并且都需要从driver端序列化发送到执行端。如果task太多,或者变量太大,都会造成网络IO和内存不必要的频繁读写,加上序列化和反序列化,会严重影响程序性能。广播变量的好处,不是每个task一份变量副本,而是变成每个节点的executor才一份副本。这样的话,就可以让变原创 2021-07-08 11:24:06 · 869 阅读 · 0 评论 -
【Hive】三引号的作用
三个点优先级最高,高于两个点,一个点的。作用一:传入自定义参数(1),""" 这里面是主要内容 """'''hive -e "SET mapreduce.job.queuename = recom;SELECT a.user_log_acct AS uid, a.time_stamp_click AS create_timeFROM ( SELECT * FROM recom_yohobuy.click_view_info WHERE date_id = %s ) AS a原创 2021-02-05 19:46:00 · 691 阅读 · 0 评论 -
【numpy】reshape 与 resize
(3, )≠(3, 1):前者表示一维数组(无行和列的概念),后者则表示一个特殊的二维数组,也即是一个列向量;这里补充:之前看到(3, ) 不知道含义!实际中遇到0. reshape的参数reshape的参数严格地说,应该是tuple类型(tuple of ints),似乎不是tuple也成(ints)。>>> x = np.random.rand(2, 3)>>> x.reshape((3, 2)) ...原创 2020-07-09 18:21:45 · 777 阅读 · 0 评论 -
【numpy】维度相关np.newaxis()、ravel()、flatten()、squeeze()
目录ravel()、flatten()、squeeze() 降维numpy.ravel() vs numpy.flatten()np.squeeeze()reshape(-1)np.newaxis() 升维ravel()、flatten()、squeeze() 降维numpy中的ravel()、flatten()、squeeze()都有将多维数组转换为一维数组的功能,区别:ravel():如果没有必要,不会产生源数据的副本 flatten():返回源数据的副本 sq.原创 2020-07-09 17:55:55 · 936 阅读 · 0 评论 -
【numpy】关于numpy的axis=0和1及高维tensor
关于numpypython中的axis究竟是如何定义的呢?他们究竟代表是DataFrame的行还是列?考虑以下代码:import pandas as pddf = pd.DataFrame([[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3]], \columns=["col1", "col2", "col3", "col4"])print(df) col1 col2 col3 col40 1 1 1 11原创 2020-07-08 14:12:45 · 2334 阅读 · 1 评论 -
【numpy】numpy中np.nonzero()的用法
nonzero(a) 返回数组a中非零元素的索引值数组。只有a中非零元素才会有索引值,那些零值元素没有索引值; 返回的索引值数组是一个2维tuple数组,该tuple数组中包含一维的array数组。其中,一维array向量的个数与a的维数是一致的。 索引值数组的每一个array均是从一个维度上来描述其索引值。比如,如果a是一个二维数组,则索引值数组有两个array,第一个array从行维度来描述索引值;第二个array从列维度来描述索引值。 该np.transpose(np.nonzero(x))原创 2020-07-09 14:40:04 · 3601 阅读 · 0 评论 -
【Hive】删除表(drop、truncate)
Hive删除操作主要分为几大类:删除数据(保留表)、删除库表、删除分区。一、仅删除表中数据,保留表结构hive> truncate table 表名;truncate操作用于删除指定表中的所有行,相当于delete from table where 1=1.表达的是一个意思。注意:truncate 不能删除外部表!因为外部表里的数据并不是存放在Hive Metastore中。创建表的时候指定了EXTERNAL,外部表在删除分区后,hdfs中的数据还存在,不会被删除。因此要想删除外部表原创 2021-02-19 15:12:50 · 6552 阅读 · 0 评论 -
【Hive】窗口函数
目录5.1 窗口函数5.1.1 窗口函数概念及基本的使用方法5.2 窗口函数种类5.2.1 专用窗口函数5.2.2 聚合函数在窗口函数上的使用5.3 窗口函数的的应用 - 计算移动平均5.3.1 窗口函数适用范围和注意事项5.4 GROUPING运算符5.4.1 ROLLUP - 计算合计及小计练习题5.15.25.35.1 窗口函数5.1.1 窗口函数概念及基本的使用方法窗口函数也称为OLAP函数。OLAP 是OnLine Analytica原创 2021-02-20 11:11:57 · 189 阅读 · 0 评论 -
【Numpy】学习与记录(1)
参考:第04章 NumPy基础:数组和矢量计算https://seancheney.gitbook.io/python-for-data-analysis-2nd/di-04-zhang-numpy-ji-chu-shu-zu-he-shi-liang-ji-suan原创 2020-06-28 17:28:33 · 112 阅读 · 0 评论 -
【Pandas】list,nparray,和pandas dataframe的互相转换
list转换nparrayimport numpy as nplist1 = []; #新建一个空的listlist1.append('hello')list1.append('world')list1.append('!')print(list1)print(type(list1))array1 = np.array(list1)print(array1)print(type(array1))nparray转换listlist2 = array1.tolist()pri原创 2021-06-23 17:08:56 · 542 阅读 · 0 评论 -
【Numpy】声明空数组
结论:numpy的数组机制并不支持空数组,如果想要一个不知道大小的空数组,可以用python的list,然后再用ndarray = np.array(list)转换。你搜索这个,你会发现好多都是np.zeros(5,2),嗯都是复制的一个国外的帖子,然而没有翻译人家的话。然后你愤怒的关闭页面。这简直就是文不对题,这哪是空的。实际上,numpy的数组机制并不支持空数组。(什么鬼答案?)简单来讲就是numpy会申请连续的内存,如果频繁改变大小,他就要频繁申请新的内存。如果你会c语言知道指针的话..原创 2020-07-16 12:59:16 · 15195 阅读 · 1 评论 -
【Numpy】vectorize将函数向量化
numpy.vectorize(pyfunc, otypes=None, doc=None, excluded=None, cache=False, signature=None)用法:np.vectorize(函数)(待函数处理的数据)Parameters: pyfunc:python函数或方法 otypes:输出数据类型。必须将其指定为一个typecode字符串或一个数据类型说明符列表。每个输出应该有一个数据类型说明符。 doc:函数的docstrin...原创 2021-04-27 11:06:36 · 5320 阅读 · 0 评论 -
【Pandas】学习与记录(2)isin&apply&groupby&agg
参考:pandas apply() 函数用法使用到的数据:DATA | TRAIN 练习题数据集练习的代码:10套练习,教你如何用Pandas做数据分析【1-5】原创 2020-06-28 11:21:47 · 401 阅读 · 0 评论 -
【Pandas】iloc选取数据&数据分箱
pandas中利用 .iloc 和 .loc 选取数据 Pandas 基本的数据结构是 Series(数组) 和 DataFrame(类似二维数组),Pandas 提供了 Index 对象,每个 Series 都会带有一个对应的Index,用来标记不同的元素,Index 的内容不一定是数字,也可以是字母、中文等,它类似于SQL中的主键Pandas 读取文件时候,注意文件的存储路径不能...原创 2019-06-26 10:53:18 · 517 阅读 · 0 评论 -
【Hive】shell实现获取hive表最新分区
在对时间要求比较高的流程中,往往会希望获取最新的分区数据。如果采用 select max(分区) as p from table_name; 获取分区,如果表很大时,时间代价很大;另外,如果直接从分区路径判断,虽然速度也会很快,当hive如何数据正在插入更新时被判断,极有可能会出现job还在进行,而判断已经结束,导致错误。 有一个可行的策略,对上一个任务做依赖调度,并且采用show partitions 输出所有的分区。利用shell语句,获得最大分区值。(注:准实时情况下,一般对性能有要求,...原创 2021-07-07 16:25:14 · 1856 阅读 · 1 评论 -
【Spark】任务重要参数(涉及运行速度)
重要的参数如下,num-executors该参数用户设置spark作业总共需要多少个Exector进行来执行,这个参数很重要,如果不设置,默认只会启动少量的Executor,此时spark作业运行非常的慢。如果您的集群在1000个节点左右,那么建议设置为50~100个左右的Executor进行比较好,如果是100个节点,那么建议设置20~30个左右比较好,既不要设置的太多影响其他的任务,也不要设置的过少影响任务运行速度,需要根据节点来配置。executor-memory该参数用于设置每个Ex原创 2021-07-07 21:25:37 · 1199 阅读 · 0 评论 -
【Hive】COALESCE将NULL改为默认值
COALESCE是一个函数, (expression_1, expression_2, ...,expression_n)依次参考各参数表达式,遇到非null值即停止并返回该值。如果所有的表达式都是空值,最终将返回一个空值。比如我们要登记用户的电话,数据库中包含他的person_tel,home_tel,office_tel,我们只要取一个非空的就可以,则我们可以写查询语句select COALESCE(person_tel,home_tel,office_tel) as contact_n.原创 2021-05-27 16:35:17 · 2149 阅读 · 0 评论 -
【Hive】解析json数据
!!!hive对于数组的下标是从1开始的。get_json_object(json_field, "$.cpsPos") AS cp_pos获取json_field这个json字段里的,这个str:couponPos对应的值。作为cp_pos的数值。参考:hive函数 get_json_object的使用hive regexp_replace替换多个特殊字符...原创 2021-05-14 18:45:34 · 183 阅读 · 0 评论 -
【Hive】关于left join的问题
大表的记录数远远大于小表的记录数。目录构造小表小表内容构造大表大表内容大表 left join 小表结论小表 left join 大表结论构造小表CREATE TABLE dev.dev_small_t1 ASSELECT '1' AS id, 'ss' AS s1, 'sss' AS s2小表内容构造大表CREATE TABLE dev.dev_big_t2 ASSELECT '1' AS id, 'c' AS b1, 'ccc' AS原创 2021-04-28 11:01:24 · 980 阅读 · 0 评论 -
【hive】数据倾斜-大表小表join优化mapjoin
优化的三种方式1、小表 join 大表在小表和大表进行join时,将小表放在前边,效率会高。hive会将小表进行缓存。2、mapjoin使用mapjoin将小表放入内存,在map端和大表逐一匹配。从而省去reduce。样例:SELECT /*+MAPJOIN(b)*/ --将小表放入内存 a.a1, a.a2, b.b2FROM tablea a --大表JOIN tableb b --小表ON a.a1 = b.b1这里会有个问题,大表left join原创 2021-04-28 01:31:39 · 7913 阅读 · 2 评论 -
【Spark】RDD执行原理
目录什么是 RDD执行原理1) 启动 Yarn 集群环境2) Spark 通过申请资源创建调度节点和计算节点3) Spark 框架根据需求将计算逻辑根据分区划分成不同的任务4) 调度节点将任务根据计算节点状态发送到对应的计算节点进行计算什么是 RDDRDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是 Spark 中最基本的数据处理模型。代码中是一个抽象类,它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合。➢ 弹原创 2021-03-09 11:27:16 · 591 阅读 · 1 评论 -
【Scala】 提取器unapply方法
目录1、apply方法2、unapply方法1、apply方法回顾一下apply,类似构造函数定义了一个Foo类,并且在这个类中,有一个伴生对象Foo,里面定义了apply方法。有了这个apply方法以后,我们在调用这个Foo类的时候,就可以用函数的方式来调用:unapply接受一个对象,从对象中提取出相应的值。unapply方法主要用于模式匹配中。object Client { def main(args: Array[String]): Unit = {原创 2020-09-18 23:30:23 · 1170 阅读 · 0 评论 -
【Scala】main函数程序入口
Scala程序必须从一个对象的main方法开始。有两种方法定义方法一 def main :// 执行println语句object Main { def main(args: Array[String]): Unit = { println("=" * 10) }}方法二 继承App:// 扩展App特质object Main extends App { println("=" * 10)}...原创 2020-09-18 23:29:53 · 1893 阅读 · 0 评论