自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 收藏
  • 关注

原创 hdfs数据写入hudi表并同步hive

将topic的json解析为一层平铺的k-v def json_format(item) : new_item = {

2023-04-12 19:12:21 360

原创 Hadoop与Linux常用交互命令

一般,在linux命令前加。

2023-04-11 19:02:57 308

原创 数据湖之Hudi

Hudi介绍

2023-04-04 14:40:51 562

原创 Python与Kafka交互

pykafka KafkaClient

2023-03-02 18:54:29 568

原创 pyspark之sparksql数据流转

在pyspark中,使用sparksql进行mysql数据的读写处理,将程序保存为。

2022-12-22 18:57:22 1077

原创 Spark框架

Spark框架介绍

2022-11-29 17:37:11 605

原创 json解析

json解析

2022-07-21 16:37:17 109

原创 GitHub基本操作

GITHub

2022-02-17 17:28:31 1214

原创 sql中几个有趣的函数

分组拼接函数group_concat(拼接字段)这个函数可以按照指定分组,拼接每组中指定字段的值为一个字符串。也可以开窗使用group_concat(拼接字段) over(partition by 分组字段 order by 排序字段)select a.* ,b.time_group from dws.dws_niu_kwai_data a left join(select data_date ,brand ,people ,max(time_group) time_group

2021-11-09 17:20:02 797

原创 sql窗口函数

组内排序row_number()/rank()/dense_rank() over (order by 字段1) as 新字段:按照字段1排序编号row_number()/rank()/dense_rank() over (partition by 字段1 order by 字段2) as 新字段:按照字段1分组后,按照字段2排序编号注:row_number():排序不重复,按出现顺序排序rank():排序重复,但总数不会变。如:1,1,3dense_rank():排序重复,总数减少。如1,1

2021-11-09 16:51:27 700

原创 mysql参数使用

mysql的参数可以实现递增,常用于排名或自增日期mysql排名赋参:@rownum := @rownum+1select a.*,@rownum := @rownum+1 as 排名 from (select * from table) a,(select @rownum := 0) r给维表加日期-- 一次性插入3年数据,单个店铺unioninsert into dy_shop.shop_account_fullselect * from((SELECTs.*,@date :=

2021-11-09 16:19:06 709

原创 几个数据库踩坑经验

IQ库注意事项case when …函数返回值必须跟字段类型一致(数值型)开窗函数如row_number() over()不能参与where、group语句(需要根据开窗函数筛选分组时,可添加嵌套查询,建立外层查询,将开窗函数的返回结果作为独立字段进行相关查询)聚合函数存在于子查询时,order by必须放在最外层字符串拼接可直接用+或||:‘A’+‘B’ or ‘A’||‘B’clickhouse、AnalyticDB MySQL库注意事项这两个库都是列式存储,全索引。所以对于字段要求很严

2021-11-09 16:13:56 427

原创 sql初学tips

建表create table 表名(字段1 字段类型(长度) 约束,字段1 字段类型(长度) 约束,…)【temporary table代表临时表】【约束:not null / unique / primary key】查询基本框架select … from 表 where … group by … having … order by …查询逻辑from+join→where→group by→having→select→order by→limit从哪些表里的→哪些内容中→按照哪个字段

2021-11-09 15:52:31 244

原创 sql中几个常用的json解析函数

data:代表json格式的字段名name:代表json中的元素普通解析mysql/ADB MYSQLjson_extract(data,’$.name’)clickhousedata[‘name’]特殊字符mysqljson_extract(data,’$.“name”’)ADB MYSQLjson_array_get(data,索引)索引为int型,从0开始,也就是直接解析array中的第几个元素解析json元素中的列表mysqljson_extract(

2021-11-09 15:37:52 2105

原创 hdfs删文件夹报错

要删除hdfs上的一个文件夹/user/byy,用以下命令时:hadoop fs -rm -r /user/hive/warehouse/*报错:rm: Failed to move to trash: Permission denied: user=root, access=…错误分析:可能是root用户权限不够,在hdfs下,hdfs才是最大权限用户解决方法:用如下命令增加root用户的权限:sudo -u hdfs hdfs -chown -R root:root /user/byy

2021-08-02 17:45:36 700

原创 Spark数据结构之RDD

RDD

2021-07-29 17:07:00 447

原创 Spark在大数据分析中的使用方式

一、Spark应用程序的工作原理spark应用程序通过驱动器程序(spark shell、idea等)来发起在集群上的并行操作,包括定义集群上的分布式数据集(RDD),并对数据集进行操作。驱动器程序通过对象SparkContext(即sc)连接spark集群,从而访问spark集群上的分布式文件。在驱动器程序上,可以通过sc来创建RDD,并且一次性操作管理多个执行器节点(通过Spark API对多个节点上的分布式数据集传递函数,进行操作)。二、独立的spark程序在spark shell中会自动初始化

2021-07-28 16:01:41 588

原创 8、numpy之random中常用的随机函数

np.random.permutation(数组)按照数组的第一个轴返回数组的随机排列作为一个新数组import numpy as npb=np.arange(12).reshape(2,2,3)a=np.random.permutation(b)print(a)runfile('C:/Users/xyy/.spyder-py3/temp.py', wdir='C:/Users/xyy/.spyder-py3')[[[ 6 7 8] [ 9 10 11]] [[ 0 1

2021-06-25 16:52:56 412

原创 7、numpy之线性代数函数

np.diag(数组,k)返回一维数组作为对角线的矩阵返回二维矩阵的对角线k为正整数是对角线以上的元素列表k为负整数是对角线以下的元素列表np.trace对角线元素的和np.linalg.det(数组)数组的行列式数组必须是方阵np.linalg.eig(数组)数组的特征值和特征向量数组必须是方阵np.linalg.inv(数组)数组的逆数组必须是非奇异方阵np.linalg.pinv(数组)数组的伪逆np.linalg.svd(数组)数组的奇

2021-06-25 15:54:12 150

原创 6、numpy之文件保存与加载

在开发环境中经常需要将处理好的数组进行保存与加载一、数组保存为二进制文件1、单个数组的保存与加载np.save(r’路径\文件名’,数组名)np.load(r’路径\文件名’)将数组ndarray保存为文件,一般需要指定文件的路径,否则保存到默认路径文件默认为.npy格式加载文件,即可直接加载文件中的数组实例:数组保存import datetime as dtimport numpy as npprint('start:',dt.datetime.now())a=np.array

2021-06-25 14:16:12 1199 1

原创 5、numpy数组统计分析之坐标矩阵、统计函数、排序

一、坐标矩阵将数组作为坐标向量,从而生成坐标矩阵np.meshgrid(数组1,数组2,数组3,…)可以把每个数组都作为一个轴(数组1代表x轴,数组2代表y轴,数组3代表z轴,…)其实生成的就是各轴的坐标值之间的排列组合的个数两个数组组成的矩阵结构:array个数为2个第二个数组的元素数是每个array的子数列个数第一个数组的元素数就是矩阵中每个数列的元素数3个以上数组组成的矩阵结构:数组个数为array的个数第二个数组(y轴)的元素个数为每个array中一级子数列的个数第一个数组

2021-06-24 17:52:15 1637

原创 4、numpy之函数

数组的函数有一元函数(对一个结果数组进行计算)与二元函数(两个数组之间的计算);计算结果可以输出为新对象,也可改变数组本身实例:运算函数1、不改变数组本身一元函数import numpy as npa=np.array([1.2,-1,2.5,3])b=np.arange(4)print('数组b:\n',b)print('数组a:\n',a)print('a+b的绝对值:\n',np.abs(a+b))print('a的平方根:\n',np.sqrt(a))print('a的

2021-06-24 13:35:04 113 1

原创 3、numpy之ndarray转置与轴对换

实例:二维转置import numpy as npa=np.arange(12).reshape((3,4))print('数组a:\n',a)#二维转置print('a的转置:\n',a.transpose())print('a的内积:\n',np.dot(a,a.T))print('a.T的内积:\n',np.dot(a.T,a))runfile('C:/Users/xyy/.spyder-py3/temp.py', wdir='C:/Users/xyy/.spyder-py3').

2021-06-24 11:28:43 615

原创 2、numpy之ndarray切片

实例:每个子数列包含一个子数列的数组切片import numpy as npa=np.array([[1,2,3,4,5,6],[1,2,3,4,5]])b=a[1:4].copy()print('数组a的第1-3个元素:\n',a[0:3])print('数组a的2-4个元素组成的新数组:\n',b)a[1:3]=8print('将数组a的第2-3个元素替换成8:\n',a)runfile('C:/Users/xyy/.spyder-py3/temp.py', wdir='C:/Use.

2021-06-23 21:13:01 1805 1

原创 1、numpy之创建数组

实例:随机数组import numpy as npprint('2*3数组:\n',np.random.randn(2,3))#2个一级子数列,每个一级子数列也包含2个二级子数列,每个二级子数列包含3个随机数:print('\n2*2*3数组:\n',np.random.randn(2,2,3))runfile('C:/Users/xyy/.spyder-py3/temp.py', wdir='C:/Users/xyy/.spyder-py3')2*3数组: [[ 0.85741972 .

2021-06-23 17:48:25 599 1

原创 5、pandas运算、统计分析

实例:运算import pandas as pda=pd.DataFrame({'name':['cindy','alice','ared'],'grade':[80,90,75],'age':[18,19,20]})b=pd.DataFrame({'name':['cindy','alice','bob','ared'],'grade':[95,70,60,50]})#表a的grade列计算极差f=lambda x:x.max()-x.min()print('a的grade列的极差:')p.

2021-06-21 23:14:58 197

原创 4、pandas数据清洗与预处理

1、数据清洗2、数据预处理实例:排序、排名import pandas as pdst=pd.DataFrame({'id':[0,1,3,2],'name':['alice','cindy','bob','bruce']},index=[0,1,2,3])gr=pd.DataFrame({'id_no':[0,3,2],'name':['alice','cindy','bob'],'age':[18,18,20],'grade':['A-90','B-85','C-80']},index=[1

2021-06-21 23:13:16 273

原创 3、pandas数据预览

实例:数据查看#切片import pandas as pdimport numpy as npdata = pd.DataFrame({'id':[1,3,2],'name':['a','b','c']},index=[0,1,2])print('data:\n',data)#查看指定列print('id列:\n',pd.DataFrame(data['id']))print('id、name两列:\n',data.loc[:,['id','name']])print('第2列:\n',.

2021-06-21 23:11:37 428

原创 2、pandas数据创建

实例:一维数组Seriesimport pandas as pd#默认索引data = pd.Series([1,2,3])print('data:')print(data.index)print(data.values)print(data)print(data[2])print(data*2)print(4 in data)print(2 in data)print('\n')#自制索引data1 = pd.Series(['a','b','c'],index=['x','.

2021-06-21 23:10:15 474

原创 1、pandas数据读取输出

数据读取函数图例实例:多sheet的excel读取与保存import pandas as pdwriter = pd.ExcelWriter(r'C:\Users\xyy\Desktop\city_id_io9xlsx',engine='openpyxl')io = pd.io.excel.ExcelFile(r'C:\Users\xyy\Desktop\city_id.xlsx')print(io.sheet_names) #查看sheet列表#多sheet循环读取并保存num = 1.

2021-06-21 22:59:18 101

原创 Mysql基础知识罗列

查看数据库安全管理常用数据类型数据运输存储引擎索引数据库控制语言DCL数据库定义语言DDL数据库操作语言DML数据库查询语言DQL视图存储过程触发器

2021-06-04 10:55:29 105

原创 数据分析之numpy

Numpy库的主要数据结构:ndarray(多维数组)每个数组中每个元素的类型都一样1、创建数组创建函数图例2、数据类型与计算数据类型图例3、索引/切片4、数组转置/轴对换5、元素及函数一元函数图例二元函数图例6、用数组进行数据处理统计函数图例运算函数图例7、文件输入输出8、线性代数与伪随机数线性代数伪随机数...

2021-06-02 12:55:40 87

原创 6、pandas描述性统计

1、数据读取、输出excel读取图例1excel读取图例2数据读取函数图例2、数据创建3、数据预览4、数据清洗5、数据预处理6、数据筛选7、运算8、统计分析分类统计描述统计描述统计方法图例...

2021-06-02 12:32:12 183

原创 隐式转换与泛型

一、隐式转换隐式转换分为隐式函数、隐式参数、隐式类。隐式转换就是编译器在第一次编译出错时,自己进行二次编译,找到可以正确编译的方法,从而实现功能首先,编译器会在脚本的当前作用域范围内寻找并调用可以实现目标功能的转换规则(隐式函数/隐式类)其次,若在当前作用域没找到隐式类/隐式函数,就会在隐式参数对应的类型的作用域中查找并调用可用的转换规则隐式函数隐式函数可以扩展某个类的功能,编译器会在当前作用域内寻找并调用实现目标功能的转换规则,从而自己进行二次编译,实现隐式转换object Main {

2021-05-21 15:58:44 199

原创 模式匹配Match...case...

模式匹配:即if…else…平铺式表达,用match关键字匹配,用case限定模式,case _代表不匹配的情况下返回值模式守卫:即模式匹配中可以使用if条件限定范围,match{case … if … => …}match{case 条件1 =>{函数体};case 条件2 =>{函数体};case _ =>{函数体}}例:定义一个计算方法object Main extends App { val a:Double = 1 val b:Double

2021-05-20 18:33:23 561 1

原创 WordCount实例

1、取单词出现次数最多的前三个单词object Main extends App { val list1 = List("hello scala","hello cindy","hello alice","scala cindy","scala alice","hello") val list2 = list1.flatMap(_.split(" ")) println(list2) val list3 = list2.groupBy(i => i) prin

2021-05-17 12:04:42 286

原创 scala集合之运算函数

创建集合Map(a -> 2, b -> 1)List((a,2), (b,3), (c,1))Set(1, 3, 5, 6)1,2,3object Main extends App { val map = Map("a" -> 2,"b" -> 1) val list = List(("a",2),("b",3),("c",1)) val set = Set(1,3,5,6) val arr = Array(1,2,3)}求和:.

2021-05-13 20:32:54 456 1

原创 元组

元组就是可以存放不同类型元素的集合,每个元组最多只能存放22个元素,且元组可嵌套。元组直接用 () 创建,用元组._i访问,i为元素序号,从1开始。object Main extends App { //创建元组 val tuple = (1,"a",Map("b" -> 2).get("b"),Set(4,6,5).mkString("-"),Array(1,2,3).mkString("-"),List(2,3),("y",5)) println(tuple)

2021-05-12 12:02:55 158

原创 scala集合常用函数

一、元组元组就是可以存放不同类型元素的集合,每个元组最多只能存放22个元素,且元组可嵌套。元组直接用 () 创建,用元组._i访问,i为元素序号,从1开始。object Main extends App { //创建元组 val tuple = (1,"a",Map("b" -> 2).get("b"),Set(4,6,5).mkString("-"),Array(1,2,3).mkString("-"),List(2,3),("y",5)) println(tuple)

2021-05-12 12:01:47 316 1

原创 Scala集合之Set与Map

一、SetSet默认为不可变、无序、无重复项的集合;可变Set需要引入scala.collection.mutable.Set包Set直接创建即可Set/scala.collection.mutable.Set(),也可以直接输出集合形式1、不可变Setobject Main extends App { //创建,输出是无序的 val set = Set(1,3,2,5) println("set:" + set) //添加,无序集合,所以添加元素的位置是可

2021-05-11 16:56:20 123

空空如也

空空如也

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

TA关注的人

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