大数据处理hadoop/spark
文章平均质量分 73
对于haodoop和Spark相关的大数据处理上的笔记,如MapReducer等
旺仔的算法coding笔记
从自己能做到的开始,一件件来,缓慢而坚定地前进,尽力而为,自己也终将有成为大佬而从容自在的时候
展开
-
hive/spark写入保存出现小文件过多的解决
数据倾斜与小文件问题。在pyspark 中直接以 spark.sql(insert into tableNew ..partition(...).select ...from tableOld)的方式写入数据时,默认未开启动态分区会报错。开启动态分区后容易造成小文件过多从而磁盘报警。原创 2023-02-02 14:50:58 · 2486 阅读 · 0 评论 -
pyspark将DataFrame写入tfrecord 和tf中tfrecord的解析
做特征工程时,利用pyspark 将数据处理后保存为tfrecord以供后续的模型训练。本文给一个保存为tfrecord 和对tfrecord进行解析的案例。原创 2023-02-02 13:05:41 · 1365 阅读 · 0 评论 -
spark读取数据写入hive数据表
pyspark 从已有数据表读取数据写入目标hive表的代码模板原创 2023-02-01 18:35:16 · 5706 阅读 · 0 评论 -
None(null) 和NaN的区别联系和空值处理
对于python语言中,在pandas 和 pyspark以及普通的python代码中经常遇到空值需要处理的情况,有时见到的是None,有时是null,有时是NaN,本文尝试对这三者进行一个汇总,和对于pyspark中关于空值的处理进行汇总。 目录一 、含义区分: None 和null NaN二、缺失值填充-dataframe.fillna函数 和 dataframe.na.fill函数 三、含有空值的过滤 在python代码中并没有直接的的null,但是有和其意义相近的None。对于当None值被写入原创 2023-02-01 16:48:51 · 3000 阅读 · 0 评论 -
pyspark 保留小数位数-笔记
pyspark中对于数值类型的值进行小数位数的保存可以通过两种方式处理,一个是select中结合functions里的bround,另一个是selectExpr中的结合round。 pyspark.sql中的functions.bround进行处理。原创 2023-02-01 12:00:26 · 1315 阅读 · 0 评论 -
PySpark DataFrame 的列操作
pySpark 中关于DataFrame的列的各种操作的总结原创 2023-01-31 17:34:48 · 1604 阅读 · 0 评论 -
分位数的理解与查询
分位数的理解和查询原创 2023-01-31 11:55:20 · 1528 阅读 · 0 评论 -
PySpark-DataFrame条件筛选
.where 条件筛选.filter 过滤.isin 过滤funcs.when()原创 2023-01-05 00:39:12 · 3890 阅读 · 0 评论 -
spark- Dataframe基本操作-查询
查询相关操作.show() 显示头n 行.printSchema() 打印表概要,.count() 查询统计表中数据行数.distinct() 去重后的数据.collect()获取所有数据到数组.head(num) 以及.take(num) 获取前num行记录.sample() 采样.select() 选择列数据.describe() 查看数据的统计分布原创 2023-01-03 23:42:05 · 5005 阅读 · 0 评论 -
spark-RDD学习笔记
本文是19年学生时学习林子雨老师课程中的一些学习笔记,主要内容包括RDD的概念和运行原理,rdd相关编程api接口以及对应的实例。原创 2023-01-02 16:38:36 · 1094 阅读 · 0 评论 -
spark理论
大数据产品与spark的一些概念与运行原理介绍原创 2023-01-02 16:18:17 · 600 阅读 · 1 评论 -
【无标题】
join优化、group by 优化等原创 2022-08-23 15:01:16 · 292 阅读 · 0 评论 -
直接从Hive 表中数据抽样-Sample
工作中会遇到需要对一个大型表中的数据进行取样分析的问题,并不需要去跑mapreduce来取样,hive表中本身就提供了取样的相关函数。本文是对遇到的hive表中抽样问题,进行一个记录。随机分桶抽样:TABLESAMPLE (BUCKET 1 OUT OF 40 ON rand())SELECT *FROM tabelName1 TABLESAMPLE (BUCKET 1 OUT OF 40 ON rand())WHERE column1='20210220' and column2='pa原创 2021-03-28 21:11:53 · 884 阅读 · 0 评论 -
order by 排序HiveSQL
工作时常会有根据某个或某几个字段的值大小进行排序的需求,hive sql 同sql一样支持多个字段进行升降序排序,其中各个字段之间用逗号进行分割,当未注明desc(降序)还是asc(升序)时默认的是进行升序排序。下文以两个字段为例进行笔记记录。1) order by column1,column2;--未注明,则两个字段都是进行升序,即先按column1进行升序排序,当column1的值相同的时候,则继续按column2的值进行升序排序显示。2) order by column1,column2 d原创 2021-01-17 10:34:00 · 2334 阅读 · 0 评论 -
left join on 筛选与where筛选的比较
join on后面也能进行条件筛选,where后面也能加条件进行筛选,但两者的结果是不一样的。下面通过实际数据案例来说明问题。数据准备:建表与写入数据A 表hive >create table tempTableAzw(id int,name string ,grade int ,dept int ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|';hive >load data local inpath '/data0/VR.原创 2021-01-16 23:07:03 · 2235 阅读 · 0 评论 -
explode与lateral view解析 hive
工作中看代码时遇到lateral view explode(split(sni_type,',')) snTable as sni_info ,初看挺一脸懵逼的,细查之后才明白是对字段sni_type进行分割之后,将分割后中的元素值转换为了多行。具体:split()函数split()函数用于分割数据。语法格式为split(str,sep) ,参数str为字符串类型的字段,sep为分割符(支持正则),结果返回一个数组array。如上面split(sni_type,',') ,假设字段sni_typ..原创 2021-01-16 12:02:24 · 392 阅读 · 0 评论 -
Hive 函数学习总结1(数学统计、字符串处理函数)
在处理数据时,完全可以借助hive 本身就已经自带的多种功能强大的函数,在拉数据的时候就同时进行了处理,不需要再傻傻的拉到本地再借助python去处理了。本文结合参考文献,将自己工作中遇到过的部分函数记录下来,进行简单介绍与用作备忘。(在不知道有哪些函数的时候,可以通过hive -e "show functions ;"查看里面有的函数。目录数学统计类函数字符串函数1、字符串长度函数:length2、分割字符串函数: split ****3、带分隔符字符串连接函数:concat_ws原创 2021-01-15 22:25:34 · 1504 阅读 · 0 评论 -
查询某一个特征(字段)的取值种类有多少(去重)
hive sql 中,查询某个字段的取值总共有多少个类别,只需要count一下即可,但需要注意加distinct.如查询表中符合条件的uuid总共有多少个类别(独立不重复的uuid 有多少)-- 独立的uuid总数select count(distinct(uuid))from bigTable0111zwwhere cre_mod in ('tianyi_npagev', 'tianyi_nspagev') and sni_info='7';-- 结果输出 5993distin原创 2021-01-15 20:06:04 · 7667 阅读 · 0 评论 -
hive 数据写入
hive表中数据的写入主要有 insert into(overwrite) values 、 insert ... select 、 load 、 create table as select ... dataTable 这几种方式。其中hive从0.14版本开始支持 insert into table values (line data)的形式。创建/查看/使用/删除 数据库建表的方式从头建表和从已有表中建表-- 方式一 从头建表此表drop table if exists zw;.原创 2021-01-12 23:51:21 · 4630 阅读 · 0 评论 -
hived的各种join
hive 的join 使用hive中的join只支持等值join,也就是说join on中的on里面表之间连接条件只能是=,不能是<,>等符号。此外,on中的等值连接之间只能是and,不能是or. (如果在on 里添加非表之间的条件可以是非等号)。一图胜千言。left join :以左表为主表,返回左表的所有行,如果右表中没有匹配,则依然会有左表的记录,右表字段用null填充。关于left join 需要注意的点:理解left join执行的条件。在A joi..原创 2020-12-08 01:01:14 · 464 阅读 · 0 评论 -
hive 比较两个表数据的不同
工作中常会需要去对比两个表中某些数据的不同。以及关于join的操作。这里将遇到的记录一下。比较两个表的不同left Join 保证了左表的数据一定会存在,对于这类查Diff的场景很合适下面这个语句可以查出来T2中比T1新增的列与数据key表示连接的关键值,唯一信息的那一列,例如用户ID之类SELECT * FOROM T1 LEFT JOIN SELECT * FROM T2 ON T1.key = T2.keyWHERE T2.key is NULL对于想进..原创 2020-12-08 00:45:43 · 10470 阅读 · 2 评论 -
Hive 边做边记录 字符串处理函数与解析
近期校验数据,深感自己还有太多需要好好学习的地方,尤其是mentor师父写的hql和自己写的一对比,效率提升太多了。 将自己最近遇到的和看到相关的,先记录整理下。查看表和字段信息查看表的信息两种方式showhive -e " show create tableName ;"deschive -e "desc tableName;"两个都会显示相应字段、字段的类型和对应的注释;查看当前用户有的表show tableshive 字符串处理cast 类型转换可以将属性的值的类原创 2020-12-03 01:41:44 · 377 阅读 · 0 评论 -
hive sql 时间戳转换与时间的各种转换
from_unixtimefrom_unixtimehive sql 中时间戳转换函数: 由bigint类型的值转换为指定时间戳格式; from_unixtime()from_unixtimefrom_unixtime(bigint unixtime[, string format])返回值类型:string功能: 转化UNIX时间戳(从1970-01-01 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式示例:hive (temp)> select ...原创 2020-11-24 00:58:30 · 23772 阅读 · 1 评论 -
报错问题:分隔符\t识别不出来问题,本地可以分割出,但是MapReduce却报错
对于系统的默认分割符,在MapReduce中的识别与本地的显示存在转码问题。输入给sys.stdin的是hsql中select出来结果写入hdfs的数据,如果抽取部分数据到本地测试用个下面\t分割能很好分割select出来的数据,但是一旦提交hadoop的MapReduce服务器处理就报错。 for line in sys.stdin: json_dict1 = {} data=line.strip() data_list = data.split('\t') 原因分析与解决:原创 2020-08-31 22:45:37 · 1279 阅读 · 0 评论 -
Hadoop集群找错bug流程与yarn 命令
将一个项目在服务器上启动提交给hadoop集群的任务上出错了,改如何调试?总结下:如何去找错的思路。整体围绕: 数据、模型、代码三个方面。此处提下查看代码出错问题。在服务器启动脚本,如sh train.sh后,通常会在log目录下,有运行脚本对应的log信息文件,如train_20200827.log,用vim 打开log,信息中大概60行上下会有对应application的监控hadoop的监控面板,类似The url to track the job: http://yz70210.hado原创 2020-08-27 18:28:12 · 287 阅读 · 0 评论 -
bug积累: hadoop集群没有权限查看监控日志/proxy/application_1594195336447_10322228/User is unauthorized to
在cpu集群上跑了tensorflow代码,想去查看报错的具体信息。对于 服务器集群报错,需要去查看日志,代码跑的logs日志,看里面的错误。里面会有个带着hadoop application的监控地址,http://yz70210.hadoop.data.sina.com.cn:9008/proxy/application_1594195336447_10322228/?ticket=ST-964608-dtQ38mpqrOPB0SozK9Un&ext= ,复制到浏览器中,如果提示没有权限,.原创 2020-08-24 21:51:37 · 605 阅读 · 0 评论 -
hive sql中传date 指定后的“%Y-%m-%d“格式,需要加引号
其中dt_playtime在shell中的变量赋值为dt_playtime=`date -d "$dt" +"%Y-%m-%d"` ##需要传递为字符串,加引号才能被识别## 先查苏打播放器的时间原语句为:SELECT did,uuid, if( cast(duration as float) is NULL, 0.0, cast(duration as float) ) as duration FROM mds_suda_video_原创 2020-08-03 19:25:38 · 3129 阅读 · 0 评论 -
snapshot脚本一 一个完整项目的运行脚本
一个处理数据的脚本命令,将其注释也一起记录下。尤其是下面的hadoop启动部分#!/usr/bin/env bash原创 2020-08-02 22:26:10 · 711 阅读 · 1 评论 -
Map Reducer的初认识
主要的各个阶段在Split 分片阶段, — 只需要知道有这个阶段就有了,具体大小的关系,如何计算的所有的输入都会被分成若干个分片,即对对输入的所有文件在block中形成Z个分片。 一个分片(split)会要对应下游一个Map Task。输入文件默认是要保存到 NataNode的block块中,Hadoop2.x默认的block大小为128MB(可以在hdfs-site.xml中设置参数dfs.block.size) 在分片阶段,所有的输入文件都会被计算分配到相应的block中, ...原创 2020-08-02 20:52:02 · 311 阅读 · 0 评论 -
MapReducer中数据倾斜,将key设置为随机数的问题
问题:为什么在mapper.py阶段输出是三个值,而在reducer阶段却只prink后面的两个值跳过第一个值key了?这第一个key其的作用是什么?能不能用第二个值作为第一个值中key的值?理解:mapper阶段的第一个key是用来分数据的,第一个key的值,设置为了random组成的(由定义了设置了的key = str(randint(0, 10000)) + '@' + str(self.data[self._fcode_did_hash])组成,),就是想尽可能随机的均匀分到不同的reducer原创 2020-08-02 20:25:30 · 832 阅读 · 0 评论