- 博客(28)
- 收藏
- 关注
原创 Value类型-coalesce()合并分区
Value类型-coalesce()合并分区1、coalesce算子:def coalesce(分区个数 :Int , 是否走shuffle :Boolean = false) : RDD[T]2、coalesce算子功能:coalesce算子一般用来合并分区(即减少分区个数,解决小文件分区过多问题),第二个参数决定是否走shuffle,默认是false;需要注意的是当需要增加分区个数时,必须将第二个参数设置为true才能实现3、例子:4个分区合并为2个分区1. package com.zh
2021-05-08 22:46:19
266
原创 Value类型-GroupBy之WordCount
Value类型-GroupBy之WordCount1、lambda表达式写法package com.zhaoxuan.scalatestimport org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}/** * 2.3.1.8 Value类型-GroupBy之WordCount * */object WordCountgroupBy { def main(args: Array[Str
2021-05-08 22:44:52
331
原创 Value类型-groupBy()分组
Value类型-groupBy()分组1、groupBy()算子函数签名:def groupBy(f : T =>K]) : RDD[K, Iterable[T]]2、算子·功能:1、将原来RDD中的元素按照groupBy中的函数f的执行结果进行分组2、结果相同的元素进入同一个迭代器3、groupBy算子存在shuffle4、shuffle会落盘,元素会在不同分区中乱窜3、例子1:将偶数、奇数分别分组1. package com.zhaoxuan.scalatest 2.
2021-05-07 22:44:55
651
1
原创 Value类型-glom()分区转换数组
Value类型-glom()分区转换数组1、函数签名def glom() : RDD[Array[T]]2、函数功能1、将原来RDD中的每个分区转换成一个数组2、将这些数组放到新的RDD中3、数组中的元素类型与原分区中的元素类型一致,不会改变3、例子:求出RDD中每个分区的最大值,并将最大值相加1. package com.zhaoxuan.scalatest 2. 3.import org.apache.spark.rdd.RDD 4.import org.apache.s
2021-05-07 22:41:31
384
原创 Value类型-mapPartitionsWithIndex()带分区号
Value类型-mapPartitionsWithIndex()带分区号1、格式:mapPartitionsWithIndex(index:Int,f : Iterator[T] => Iterator[U] , pP : Boolean = false) : RDD[U]2、功能:最前面多一个参数代表分区号,将原来RDD中的元素以分区为Iterator依次进入f函数,可以操作,使得输出结果加上分区号,方便看RDD内数据元素的分区2、例子:创建一个RDD,使之带分区号输出1. packag
2021-04-23 22:17:40
649
原创 Value类型-map()和mapPartitions()区别
2.3.1.3 Value类型-map()和mapPartitions()区别1、map算子:原来RDD中的元素遍历,然后依次进入map算子中的f函数,这些元素形成新的RDD2、mapPartitions算子:原来RDD中的元素,按照分区打包成Iterator迭代器,按批次依次进入mapPartitions算子中的f函数,在f函数内部需要手动写逻辑遍历Iterator中的元素并做操作后形成Iterator出来,最后形成新的RDD3、map算子每次处理RDD中的一个元素,处理完一个元素便释放内存;map
2021-04-23 22:16:05
200
原创 2.3.1.2 Value类型-mapPartitions()以分区为单位执行Map
2.3.1.2 Value类型-mapPartitions()以分区为单位执行Map----------------转载放原连接,违权必究--------------------------1、格式:mapPartitions(f : Iterator[T]=> Iterator[U],pP:Boolean = false) : RDD[U]2、功能:1、原来RDD中的元素按照一个分区为一个Iterator,遍历分区2、每个分区数据(Iterator)依次按批次进入mapPartitio
2021-04-23 00:07:33
166
原创 2.3.1.1 Value类型-map()映射
2.3.1.1 Value类型-map()映射1、格式map算子:map(f :T => U) :RDD[U]2、功能:1、原来RDD调用map算子时,会遍历原来RDD中的元素2、原来RDD中的元素会依次通过map算子中实参函数f3、最终原来RDD中的所有元素通过map算子中实参函数f后会形成一个新的RDD4、新的RDD和原来RDD中元素的分区不会改变(即不会shuffle,不会落盘);元素类型可能会改变(如Int元素在f中发生字符串拼接)3、例子:将原来RDD中的元素扩大2倍1.
2021-04-23 00:04:29
184
原创 2.1.2 RDD的创建-从集合中创建
2.1.2 RDD的创建-从集合中创建1、创建RDD有两个函数:parallelize()和makeRDD()【常用】2、代码步骤://2.1创建Spark配置文件val conf :SparkConf = new SparkConf().setAppName(“自定义App名字”).setMaster(“local[核心个数]”)//2.2创建SparkContext对象(sc)val sc :SparkContext = new SparkContext(conf)//2.3从集合中创建R
2021-04-21 22:23:47
191
原创 2.1.3 RDD的创建-从外部存储系统的数据集创建
2.1.3 RDD的创建-从外部存储系统的数据集创建1、从外部文件创建RDD,外部文件可以是:本地文件,支持Hadoop的文件系统(如Hbase,HDFS等)2、准备外部数据(HDFS上面的话,需要有准确的目录及文件路径)def main(args :Array[String]) :Unit = {val conf :SparkConf = new SparkConf().setAppName(“自定义App名字”).setMaster(“local[*]”)val sc :SparkConte
2021-04-21 22:20:46
631
原创 4.7 删除表
4.7 删除表1、方法drop table if exists 表名;2、说明:管理表(内部表)既能删除Hive上的元数据,也能删除HDFS上的数据;外部表只能删除Hive上的元数据,不能删除HDFS上的数据
2021-04-19 23:30:20
134
原创 4.6.1 重命名表
4.6.1 重命名表1、方法:alter table 原表名 rename to 新表名;4.6.3 增加/修改/替换列信息1、改变列alter table 表名 change column 老列名 新列名 新数据类型first或者after 列名;【增加列到当前表列首或者增加列到某列之后】改变类时,新的数据类型范围必须大于或等于原来数据类型2、增加列alter table 表名 add columns(列名
2021-04-19 23:29:07
248
原创 4.5.3 管理表与外部表的互相转换
4.5.3 管理表与外部表的互相转换1、查看表类型desc formatted 表名;2、内部表转为外部表alter table 表名 set tblproperties(‘EXTERNAL’=’TRUE’);3、外部表转为内部表alter table 表名 set tblproperties(‘EXTERNAL’=’FALSE’);4、注意事项:‘EXTERNAL’=’TRUE’/’EXTERNAL’=’FALSE’必须全大写...
2021-04-15 00:15:09
157
原创 4.5.2 外部表
4.5.2 外部表1、外部表概念:Hive不能掌握外部表的生命周期,即如果在Hive中删除外部表,那么在该表在Hive中的元数据会被删除,但是在HDFS上的数据并不会被删除2、外部表与管理表(内部表)的应用场景定期将网络日志创建为外部表,将中间表和计算表设置为内部表(管理表)(方法即insert into 导入数据)3、健壮性创建create external table if not exists 表名(列名 数据类型,列名 数据类型,列名 数据
2021-04-15 00:13:21
398
原创 4.5.1 管理表
4.5.1 管理表1、管理表概念:用create table 表名创建的表都是管理表(也称为内部表)Hive掌握着管理表的生命周期,即如果删除了管理表(内部表),则管理表在Hive上的 元数据和在HDFS上的数据都会被删除管理表的数据的存储位置在HDFS上,于配置文件($HIVE_HOME/conf下新建的hive-site.xml文件中)中的参数(hive.metastore.warehouse.dir)中设定,如在HDFS上的/user/hive/warehouse/数据库名.db下管理表
2021-04-13 23:59:01
212
1
原创 4.5 创建表
4.5 创建表1、语法CREATE [EXTERNAL] TABLE [IF NOT EXISTS] 表名(列名 数据类型 [COMMENT ‘该列注释信息’],列名 数据类型,列名 数据类型,。。。。。。)[ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘分隔符’][COLLECTION ITEMS TERMINATED BY ‘分隔符’][MAP KEYS TERMINA
2021-04-13 23:56:56
128
原创 4.4 删除数据库
4.4 删除数据库1、删除空数据库DROP DATABASE 数据库名2、健壮性的删除数据库(如果该数据库不存在会报错,为了增强代码健壮性,加上IF EXISTS)DROP DATABASE IF EXISTS 数据库名;3、删除一个非空数据库DROP DATABASE 数据库名 CASCADE;4、健壮性删除一个非空数据库DROP DATABASE IF EXISTS 数据库名 CASCADE;...
2021-04-13 00:04:16
283
原创 4.3 修改数据库
4.3 修改数据库1、修改数据库只能修改数据库的DBPROPERTIES属性;不能修改数据库其他信息(数据库名,数据库位置等都不能修改)2、语法:ALTER DATABASE 数据库名 SET DBPROPERTIES(属性名=属性值,属性名=属性值,…);3、查看数据详细详情信息 desc database extended 数据库名;...
2021-04-13 00:02:39
369
原创 4.2.2 查看数据库详情
4.2.2 查看数据库详情1、查看数据库详情desc database 数据库名;2、查看数据库详细详情desc database extended 数据库名;
2021-04-06 23:38:36
492
原创 4.2.1 显示数据库
4.2.1 显示数据库1、显示全部数据库show databases;2、过滤显示数据库show databases like ‘模糊查询内容’;例子:show databases like ‘hahaha*’;(查询所有以hahaha开头的数据库名)
2021-04-05 23:52:48
86
原创 4.1 创建数据库
4.1 创建数据库1、语法CREATE DATABASE [IF NOT EXISTS] 数据库名LOCATION ‘HDFS上的路径’COMMENT ‘自定义注释信息’WITH DBPROPERTIES(属性名=属性值)2、IF NOT EXISTS:当创建一个数据库时,如果已经存在一个同名数据库则会报错,为了增强代码健壮性,可以加上【标准写法】3、LOCATION ‘HDFS上的路径’,可以指定创建的数据库存储在HDFS上的具体什么地方如果不指定则默
2021-04-05 23:51:06
337
原创 3.3 类型转化
3.3 类型转化1、Hive的基本数据类型支持隐式类型转换(类似java中的自动类型转换)隐式类型转换规则:Tinyint——>Smallint——> int ——>bigint——>float——>doubleString——>范围小的类型都可以自动转换为范围大的类型double:string,tingint,smallint,int,bingint,float可以自动转换为double2、显示类型转换(类似java中的强制类型转换)cast(范围较大
2021-04-04 17:00:57
201
原创 3.2 集合数据类型
3.2 集合数据类型1、Hive中有三种集合数据类型: STRUCT、MAP、ARRAY**2、**STRUCT和c语言的struct类似MAP及ARRAY与java中的map,array类似3、声明方式STRUCT集合类型列的声明: 列名 STRUCT<元素1名:基本数据类型,元素2名 :基本数据类型,元素3名:基本数据类型,…>MAP集合类型列的声明: 列名 MAP<key的基本数据类型,value的基本数据类型>ARRAY集合类型列的声明: 列名
2021-04-04 16:59:51
795
原创 3.1 基本数据类型
3.1 基本数据类型1、对应关系HiVE Mysql javaTINYINT TINYINT byteSMALLINT SMALLINT shortINT INT intBIGINT BIGINT longFLOAT FLOAT floatDOUBLE DOUBLE doubleSTRING VARCHAR StringTIMESTAMP TIMESTAMP 时间类型BINARY BINARY 字节数组BO
2021-04-04 16:58:41
135
原创 Hive其他命令操作
2.7 Hive其他命令操作1、退出Hive窗口quit;exit;说明:新版Hive中二者已经没有区别,先隐式提交数据,再退出老版Hive中quit的作用:不提交数据,直接退出老版Hive中exit的作用:先隐式提交数据,再退出2、在hive中查看或者操作HDFS上的文件例子:查看HDFS系统上的所有文件:dfs -ls /;3、查看Hive中的历史记录(执行quit;命令以后,quit之前的记录才会被写入此文件)第一步:进入/root/或者非root用户下的目录(即/ho
2021-04-03 16:47:45
317
原创 写写博客吧
本人学习大数据已经很久了,在网络很多地方看到小白想学习大数据,但是无从下手或者学的相当吃力,甚至很多工作了两三年的工程师也有很多迷惑的地方。大数据还很年轻,大数据社区需要更多人来建设,我看到现状,也决心开始写博客,为大数据的发展贡献自己的一份绵薄之力,希望大家多多指教,共同进步!...
2021-04-03 15:53:27
101
原创 Hive常用交互命令
2.6 Hive常用交互命令1、不在Hive窗口中执行sql代码a.首先进入/opt/module/flume目录中b.写代码:bin/hive -e ‘‘具体的hive sql代码’’;2、不在Hive窗口执行一个sql脚本a.首先要有一个.sql脚本文件(.sql脚本文件中有正确的sql语句)b.执行脚本:bin/hive -f 路径及文件名.sql不在Hive窗口执行一个sql脚本,并将运行结果写到某个.txt文件中bin/hive -f 路径及文件名.sql
2021-04-03 15:37:28
203
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人