- 博客(45)
- 收藏
- 关注
原创 Spark窗口函数
sum(case when round(r/2)=zhongweishu then sco else 0 end) -- 下标等于中位数返回true,做sum(sco)求和 , 否则不求和。排序 -- 累计, 第三条数据是第一条和第二条数据的和。(2) DF 转换成 RDD -- studentDF.rdd。不排序 -- 全局结果,同一个组内每一条数据后面的值都一样。(3) 凡是通过自己和自己关联的, 都是可以通过窗口实现的。(1) 分组聚合里面的函数,基本都可以用于窗口函数。
2024-10-31 20:50:48 503
原创 Spark SQL
3、在jars包位置 : spark-submit --master yarn-client --class com.shujia.spark.sql.day05.Demo07Submit spark-1.0.jar。1、shell命令行: spark-sql --master yarn-client --conf spark.sql.shuffle.partitions=2。**** 至此hive就不能用了。/*+broadcast(a) */ --> hint语法: sql里的注解的语法。
2024-10-30 17:39:12 1099
原创 Spark SQL DSL
schema("id STRING, name STRING, age INT, gender STRING, clazz STRING") // 指定字段名和字段类型, 必须按照数据顺序指定。// 在前面 DF 的基础上增加列 ( 上面的简写, 省去写 $"id", $"clazz", $"sumSco" 步骤, 直接将 "r" 加在 "sumSco" 后面 ).load("data/students.txt") //指定读取的路径。
2024-10-29 17:47:19 762
原创 Spark资源调度和任务调度
Spark client模式下任务成功运行时会在node1、node2两个节点,随机一个节点上启动两个进程 :1) ApplicationMaster : 所有任务在yarn上运行都会启动的进程2) Executor : 执行器在master节点启动一个进程 :1) SparkSubmit -- client模式下就是一个Driver任务结束后这几个进程会立即消失这是Spark向yarn申请到的资源。
2024-10-28 21:19:25 920
原创 数据清洗(脚本)
非常适合处理复杂的大数据集和数据分析。SQL更适合在数据库中直接操作数据,尤其是结构化数据的清洗。Shell 脚本适用于文本文件级别的批量处理和清理。
2024-10-20 15:26:45 694
原创 Scala第三天
类对象 : 一个class文件在内存中的存在形式, 本质是Class这个类的对象(所有的类都是Class类的对象)// 参数类型String转换成了Read类的类型, 所以String类型的就有了load方法。可以将构造函数参数类型转换成当前类的类型 -- 构造函数参数类型就会多了当前类的方法。隐式转换类和类名无关,和构造函数的参数类型、隐式转换的方法名有关。可以将当前作用域中所有的参数类型的变量转换成返回值类型。隐式转换的作用 -- 可以动态的给对象增加新的方法。
2024-10-08 21:54:52 470
原创 Scala第二天
val filterStudent: Array[String] = students.filter(s => "文科一班".equals(s.split(",")(4)))(3) flatMap() : 将集合中的元素一个一个传递给后面的函数, 函数的返回值必须是一个集合, 然后将返回的集合展开成一个新的集合。val map = Map(("001", "张三"), ("002", "李四"), "003" -> "王五")(2) filter() : 将数组中的元素一个一个传递给后面的函数。
2024-09-26 21:44:46 1122
原创 Scala第一天
在bg中创建Scala模块,导入3个org.scala-lang依赖 和 1个Java Compiler(Java 编译的插件) 、1个Scala Compiler(Scala 编译的插件)java代码的.class文件可以反编译回.java代码, 而scala代码的.class文件只能反编译回.java代码。(1) scala 变量的类型可以自动推断,根据 "=" 右边的值,自动推断变量的类型。(2) 在scala的类中有一个默认的构造函数 , {}包裹的就是默认构造函数。
2024-09-25 22:20:20 937
原创 HBase导入大批量数据 BulkLoading
因为入库到HBase的时候,作为一个整体的Region,key是绝对有序的。如果对HFile进行入库HBase,相当于move HFile到HBase的Region中,HFile子目录的列族内容没有了,但不能直接使用mv命令移动,因为直接移动不能更新HBase的元数据。它是利用hbase的数据信息按照特定格式存储在hdfs内这一原理,直接生成这种hdfs内存储的数据格式文件,然后上传至合适位置,即完成巨量数据快速入库的办法。仅适合初次数据导入,即表内数据为空,或者每次入库表内都无数据的情况。
2024-09-20 21:42:15 448
原创 面对百亿数据,HBase为什么查询速度依然非常快?
正因为以上大致的查询思路,保证了HBase即使随着数据量的剧增,也不会导致查询性能的下降。同时,HBase是一个面向列存储的数据库(列簇机制),当表字段非常多时,可以把其中一些字段独立出来放在一部分机器上,而另外一些字段放到另一部分机器上,分散存储,分散列查询。正由于这样复杂的存储结构和分布式的存储方式,保证了HBase海量数据下的查询效率。
2024-09-20 21:17:23 428
原创 Kettle的安装及简单使用
1、什么是kettleKettle是一款开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。2、Kettle工程存储方式(1)以XML形式存储(2)以资源库方式存储(数据库资源库和文件资源库)3、Kettle的两种设计4、Kettle的组成5、kettle特点。
2024-09-20 14:22:42 3904
原创 HBase参数调优
该设置决定了处理RPC的线程数量,默认值是10,通常可以调大,比如:150,当请求内容很大(上MB,比如大的put、使用缓存的scans)的时候,如果该值设置过大则会占用过多的内存,导致频繁的GC,或者出现OutOfMemory,因此该值不是越大越好。
2024-09-18 15:41:55 785
原创 HBase的RowKey设计
HBase是三维有序存储的,通过rowkey(行键),column key(column family和qualifier)和TimeStamp(时间戳)这个三个维度可以对HBase中的数据进行快速定位。HBase中rowkey可以唯一标识一行记录,在HBase查询的时候,有三种方式:通过get方式,指定rowkey获取唯一一条记录通过scan方式,设置startRow和stopRow参数进行范围匹配全表扫描,即直接扫描整张表中所有行记录。
2024-09-18 15:41:06 943
原创 Phoenix使用
Hbase适合存储大量的对关系运算要求低的NOSQL数据,受Hbase 设计上的限制不能直接使用原生的API执行在关系数据库中普遍使用的条件判断和聚合等操作。Hbase很优秀,一些团队寻求在Hbase之上提供一种更面向普通开发人员的操作方式,Apache Phoenix即是。Phoenix 基于Hbase给面向业务的开发人员提供了以标准SQL的方式对Hbase进行查询操作,并支持标准SQL中大部分特性:条件运算,分组,分页,等高级查询语法。
2024-09-18 15:39:46 1176
原创 HBase
1、启动hadoop验证2、启动zookeeper需要在在三台中分别启动3、启动hbase集群 , 需要在master上执行4、验证hbase通过 hbase shell 进入到hbase的命令行NoSQL:理解: NOT ONLY SQL non-relational(非关系型数据库)
2024-08-05 13:35:18 1376
原创 Hive第五天
将hive.strict.checks.no.partition.filter设置为true时,对于分区表,除非where语句中含有分区字段过滤条件来限制范围,否则不允许执行。将hive.strict.checks.orderby.no.limit设置为true时,对于使用了order by语句的查询,要求必须使用limit语句。(2)另外,有多少个reduce,就会有多少个输出文件,如果生成了很多个小文件,那么如果这些小文件作为下一个任务的输入,则也会出现小文件过多的问题;
2024-07-29 14:58:05 288
原创 Hive第四天
-同一节点的数据块形成切片时,切片大小的最小值。| Stage-0 depends on stages: Stage-3 | Stage-0 依赖 Stage-3 依赖 Stage-4。| Stage-3 depends on stages: Stage-4 | Stage-3 依赖 Stage-4。如果当前的Reduce数量为1,那么也没有优化的效果,可以通过设置reduce的数量对不同分区中的数据进行拆分排序。
2024-07-28 20:38:02 511
原创 报错FAILED: SemanticException [Error 10146]: Cannot truncate non-managed table score1.Error: Error wh
id STRING COMMENT "学生ID",subject_id STRING COMMENT "科目ID",score int COMMENT "成绩"创建表后想要清空表中原有数据使用命令。
2024-07-18 15:54:01 291
原创 Hive第三天
理科|男 | ["1500100004|葛德曜","1500100006|边昂雄","1500100009|沈德昌","1500100010|羿彦昌","1500100011|宰运华","1500100014|羿旭炎","1500100019|娄曦之","1500100020|杭振凯"] || 文科|女 | ["1500100001|施笑槐","1500100007|尚孤风","1500100016|潘访烟","1500100018|骆怜雪"] |
2024-07-17 18:15:53 591
原创 报错Failed with exception java.io.IOException:java.io.IOException: Not a file: hdfs://master:9000
【代码】报错Failed with exception java.io.IOException:java.io.IOException: Not a file: hdfs://master:9000。
2024-07-11 15:01:05 311
原创 Hive第二天
load data local inpath "/usr/local/soft/hive-3.1.2/data/文科一班女.txt" into table learn2.partition_student4 PARTITION(clazz="文科一班",gender="女");dfs -put /usr/local/soft/hive-3.1.2/data/理科一班.txt /user/hive/warehouse/learn2.db/partition_student2/clazz=理科一班/
2024-07-09 14:15:29 308
原创 Hive第一天
CREATE DATABASE IF NOT EXISTS test_database2 COMMENT "测试数据库创建" WITH DBPROPERTIES("author"="xingtong","application"="save base data");TBLPROPERTIES("author"="xing","application"="学生表,保存学生的总分,如有错误请联系 XXX");[COMMENT table_comment] -- 表的注释信息。
2024-06-23 00:32:58 755
原创 Zookeeper原理
(2)在main线程中创建Zookeeper客户端,这时就会创建两个线程,一个负责网络连接通信(connet),一个负责监听(listener)。(5)Zookeeper监听到有数据或路径变化,就会将这个消息发送给listener线程。(4)在Zookeeper的注册监听器列表中将注册的监听事件添加到列表中。(3)通过connect线程将注册的监听事件发送给Zookeeper。(6) listener线程内部调用了process()方法。(1)首先要有一个main()线程。
2024-06-22 04:00:00 308
原创 Yarn调度器(Scheduler)介绍
理想情况下,我们应用对Yarn资源的请求应该立刻得到满足,但现实情况资源往往是有限的,特别是在一个很繁忙的集群,一个应用资源的请求经常需要等待一段时间才能的到相应的资源。在Yarn中,负责给应用分配资源的就是Scheduler。其实调度本身就是一个难题,很难找到一个完美的策略可以解决所有的应用场景。为此,Yarn提供了多种调度器和可配置的策略供我们选择。在Yarn中有三种调度器可以选择: FIFO Scheduler , Capacity Scheduler , FairScheduler。
2024-06-22 03:15:00 1687
原创 MapReduce优化
基于输出键的背景知识进行自定义分区。例如,如果Map输出键的单词来源于一本书。且其中某几个专业词汇较多。那么就可以自定义分区将这这些专业词汇发送给固定的一部分Reduce实例。而将其他的都发送给剩余的Reduce实例。
2024-06-21 20:30:55 1235
原创 8计算机专业英语 期末复习
用户也常使用各种输出设备,如显示器、打印机和绘图仪,这些输出设备从CPU那里得到机器形式的结果,并把它们转化为用户可理解的形式软盘和硬盘常把这些结果记录下来用于一一次或其他机器输入。这种盘的磁头是根据空气动力学制作的,并悬浮在由高速旋转的盘片所产生的气垫上。所有与内部网有关的文档,均用超文本标记语言(HTML)编写,这是业界标准的含有文本与图形的编制文档的方法,以使文档完全独立于平台。服务器是独立于平台和应用程序的,所以它们能从过去的或外部的应用程序(包括数据库)中发送或获取数据。在你的计算机里被称为。
2024-06-12 00:00:00 1047
原创 7HADOOP大数据生态体系技术
接收到读取请求后,首先会检查请求的合法性,包括文件是否存在、权限是否满足等。如果请求合法,主节点会返回包含数据块位置信息的元数据给客户端。数据节点接收到读取请求后,会根据请求的信息读取对应的数据块。数据节点会将数据块的内容读取到内存中,并通过网络发送给客户端。while (true) {//t是读取的数据长度。定位主要用在数据分析,善于查询;客户端发送读取请求给数据节点。客户端获取数据块位置信息。客户端与数据节点建立连接。、接收和处理客户端的请求。主担负数据存储和计算。
2024-06-11 19:47:20 512
原创 4机器学习期末复习
fpr,tpr,threshold=metrics.roc_curve(ymy.ravel(),proba.ravel())#ravel拉平,变成一维。也就是说词条在文本中出现的次数越多,表示该词条对该文本的重要性越高,词条在所有文本中出现的次数越少,说明这个词条对文本的重要性越高。ymy=label_binarize(test_y,classes=(0,1,2))#转换成哑编码 30行 3列。datas=datas.dropna(how="any",axis=1)#删除NaN行。",np.NaN)#把?
2024-06-11 11:16:50 513
原创 3Pythoen高级编程复习题
students.sname='张三'students.ssex='男'#{表示把数据带到网页上。#数据库名 用户名 密码。#从表中获取所有数据。
2024-06-11 11:15:03 381
原创 6spark期末复习
val f2=(变量名1:数据类型,变量名2:数据类型…集Set、映射Map都扩展自Iterable特质。在Scala的类中,与类名相同的对象叫做伴生对象。元组可以装着多个不同类型的值,不可以更改,定长。类和伴生对象之间可以相互访问私有的方法和属性。Set是用于去重操作Map是用于存储KV对。
2024-06-11 10:58:28 352
原创 1Mysql复习题
1)表的每一列不能再分割 2)要求表中的每个非主键列完全依赖于主键,而不是依赖于主键的一部分3)要求表中的非主键列不依赖于其他非主键列。Alter table 表名(t) change oldcolumn newcolumn varchar(10)create function 函数名(p1 int,p2 int) returns int。alter table 表名 add column 列名 数据类型。Alter table 表名 modify 列名 新数据类型。主键是唯一的,不能为空,不能重复的列。
2024-06-11 08:45:05 478
原创 Hadoop 学习
hadoop fs -tail -f /re/word_2.txt # 表示追踪文件的内容。-list:表示展示当前Yarn中正在执行的 Application任务(注意,一旦完成则不展示)样例: yarn application -list -appStates FINISHED。hdfs dfs -df -h / # 查看HDFS根目录中空间使用情况。hdfs dfs -du -h / # 查看指定目录下的文件大小。-kill: 表示根据应用的ID 强制关闭一个 Application。
2024-05-26 11:46:47 415
原创 Python 基础2
(4) 切片取对角线的值 np_arr[(0,1,2),(0,1,2)] : 前()为列,后()为行 取(0,0)、(1,1)、(2,2)三个值。(3) 切片取列 [[a:b],[a:b]] 范围[[a,b),[a,b)] np_arr[:2,:2] : [[0,2),[0,2)] 表示取矩阵第1、2行的第1、2列。print("获取到一行数据: " ,cursor.fetchone()) # 将获取到的所有信息输出。
2024-05-11 08:46:47 512 1
原创 Python 基础语法 :
str_format = "{} * {} = {}" # 模板 其中{}相当于一个占位符print(str_format.format(a, b, a * b)) # 通过format()方法给占位符传值,三个占位符分别传入参数 a b a*b ,结果是: 10 * 3 = 301)可以存储不同类型的数据2)可以存储相同数值的数据 -- 重复3)存储数据内容是有序的 -- 有序4)列表中的元素是可以被删除的5)列表中可以嵌套列表。
2024-05-11 08:40:54 598 2
原创 Redis学习总结
auto-aof-rewrite-percentage<percent>,指定触发重写所需的AOF文件体积百分比:当AOD文件的体积大于size指定的体积,并且超过上一次重写之后的AOF文件体积的percent %时,就会触发AOF重写。auto-aof-rewrite-min-size<size>,触发AOF重写所需的最小体积:只要在AOF文件的体积大于等于size时,才会考虑是否需要进行AOF重写,这个选项用于避免对体积过小的AOF文件进行重写。把redis存储在内存中的数据以快照(备份)存储到磁盘。
2024-05-07 21:19:50 725
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人