自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 scala 系列之 20akka 的 actor 并发编程

24 Akka24.1 Akka 概述​ Spark的RPC是通过Akka类库实现的,Akka用Scala语言开发,基于Actor并发模型实现;​ Akka具有高可靠、高性能、可扩展等特点,使用Akka可以轻松实现分布式RPC功能。​ Actor是Akka中最核心的概念,它是一个封装了状态和行为的对象,Actor之间可以通过交换消息的方式进行通信,每个Actor都有自己的收件箱(MailBox)。​ 通过Actor能够简化锁及线程管理,可以非常容易地开发出正确地并发程序和并

2021-07-09 14:47:30 682

原创 scala 系列之 19scala 的 actor 并发编程

23 Actor 并发编程模型23.1 Actor概述为什么要学习actor?我们现在学的Scala Actor是Scala 2.10.x版本及以前版本的Actor;Scala在2.11.x版本中将Akka加入其中,作为默认的Actor,老版本的Actor已经废弃;我们学习Actor的目的就是为了学习Akka做铺垫;什么是Actor?Actor是消息并发模型;Scala中的Actor能够实现并行编程的强大功能,它是基于事件模型的并发机制。Scala是运用消息(message)的发送、接收来

2021-07-09 14:46:14 327

原创 scala 系列之 18scala 泛型

22 泛型泛型就是不确定的类型,可以在类或方法不确实传入类型时使用,可以提高代码的灵活性和复用性;scala中泛型的用法和java中差不多,但是会有一些自己独特的语法;泛型类:指定类可以接受任意类型参数。泛型方法:指定方法可以接受任意类型参数。22.1 泛型类基本用法package day04import day04.SexEnumObj.SexEnum// 定义带有泛型的抽象类abstract class FXDemo[T](val t : T) { def printInfo():

2021-07-09 14:42:15 289

原创 scala 系列之 17scala 隐式转换

21 隐式转换作用:能够丰富现有类库的功能,对类的方法进行增强,常用作类型转换也就是把一个类型转赋予另一个类的功能;隐式转换应用场景隐式转换函数、隐式值、隐式参数、隐式对象(只能在静态对象中使用);21.1 隐式转换函数隐式转换函数 是指 以implicit关键字声明并带有单个参数的函数,这样的函数被自动应用。// 声明隐式函数,用于将 int类型转成 String 类型implicit val int2Stringfunc = (a:Int) => a.toString使用示例:

2021-07-09 14:38:30 171

原创 scala 系列之 16scala 的柯理化

20 柯理化​ 柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。是把接受多个参数的函数变成接受一个参数的函数;柯理化的两种表现形式:以 加法函数为例:​ def curring(x:Int)(y:Int) = x + y​ def curring(x:Int) = (y:Int) => x + y在柯理化形式的基础上,固定一个参数,传入一个参数scala> de

2021-07-09 14:32:40 165

原创 scala 系列之 15scala 高阶函数和部分参数函数

18 高阶函数在数据和计算中,高阶函数是至少满足下列一个条件的函数:​ 1)接受一个或多个函数作为输入​ 2)输出一个函数输出一个函数// 输出Int类型scala> def add(a:Int, b:Int) = a + badd: (a: Int, b: Int)Int// 输出函数Int => Intscala> def add(a:Int, b:Int) = (c:Int) => a + b + cadd: (a: Int, b: Int)In

2021-07-09 14:15:05 172

原创 scala 系列之 14scala 抽象类和特质

17 抽象类(abstract class)与 特质(trait)抽象类:​ 抽象类与Java相似,只是Java中没有属性的抽象,scala可以有属性的抽象;特质:​ 可以把特质理解成Java中升级版的接口​ 在Java中接口不能声明没有值的属性和有实现的方法,而Scala可以声明没有值的属性和有实现的方法;重写:​ 重写与Java相似,只是Java中没有重写属性的概念,而 scala 可以重写属性;特质和抽象类的使用区别:​ 只能继承一个抽象类,但可以实现多

2021-07-09 11:40:22 322 1

原创 scala 系列之 13scala 样例类和样例对象

16 样例类和样例对象样例类在class 前加上 case 关键字,这样的类称为样例类。默认实现了Serializable接口,可以封装数据。scala 为每一个样例类自动生成一个伴生对象,在该伴生对象中自动生成的模板代码包括:1)一个apply 方法,实例化该类的时候无需使用new 关键字;2)一个unapply 方法,该方法包含一个类型为伴生类的参数,返回结果是Option 类型;​ 对应的类型参数是N元组,N是伴生类中主构造参数的个数;​ unapply 方法用于对对

2021-07-09 11:38:02 338 1

原创 scala 系列之 12scala 的 apply 和 unapply 方法

15 apply和unapply方法apply、unapply方法都被隐式的调用apply方法:​ 1)在一个类的伴生对象中定义apply方法,在生成这个类的对象时,就省去了new关键字。​ 2)apply方法的参数列表不需要和构造函数的参数列表统一,也就是说apply 方法支持重载。​ 3)apply 方法可以通过主构造器和辅助构造器new对象;​ 4)apply方法 定义在object 里,是创建对象;如果定义在class 里,是获取对象的数据;apply方法定义在

2021-07-09 11:36:27 234

原创 scala 系列之 11scala 模式匹配

14 模式匹配14.1 match 语句match 语句用在当需要从多个分支中进行选择的场景,类似于java 中的switch 语句。语法:变量 match{ case "值" => 语句块1 // 语句块后不用加break case "值2" => 语句块2 case _ => 语句块N // 类似于java的default}其中:1)case 后面的表达式可以是任何类型的常量,如字段串、类、元组、集合等;2)与java的switch不

2021-07-09 11:32:42 90

原创 scala 系列之 10scala 的 private 关键字

13 private关键字总结修饰class1、在class前面使用private可以被相同包(包含递归子包)访问(能引入类);2、在class前面使用private[包名]代表是包的访问权限,只能指定的包名和子包(包含递归子包)下才能访问;private修饰 主构造器、主构造器参数、辅助构造器、属性、方法, 当前类和伴生对象可以访问,其他对象不能访问;private[this]修饰 主构造器、主构造器参数、辅助构造器、属性、方法, 只有当前类可以访问;private[包名] 修饰 主构造器、主

2021-07-09 11:23:11 848 1

原创 scala 系列之 09scala 单例对象和伴生对象

11 单例对象在scala中没有像java一样的static关键字;在scala中是没有静态方法和静态字段的,但是可以使用object关键字加类名的语法结构实现同样的功能;在scala中用object修饰的为单例对象,单例对象中主要存放常量和工具方法;上面代码通过反编译发现:结论: 可以利用这一点来实现初始化逻辑。定义单例对象,实现连接池的操作, 提供获取可用连接个数、获取连接、释放连接package day03import scala.collection.mutable.ArrayB

2021-07-09 11:19:33 212 1

原创 scala 系列之 08scala 类和构造器

9 类​ 类和对象是Java、C++等面向对象编程的基础概念。类是用来创建对象的蓝图。定义好类以后,就可以使用new关键字来创建对象。​ scala 如果不写权限修饰符,默认是public。​ 一个类文件可以声明多个类;定义语法://模板类class 类名{}//单例对象--使用main(), 来测试object 类名{}其中:​ 类中可以放属性、方法、函数;​ 类中属性的定义和变量的定义一样,用val 或 var 进行定义,默认权限是pub

2021-07-09 11:11:51 202

原创 scala 系列之 07scala 集合常用方法和函数操作

8 集合常用方法和函数操作foreachoreach 方法的原型:// f 返回的类型是Unit, foreach 返回的类型是Unitdef foreach[U](f: Elem => U)该方法接受一个函数 f 作为参数, 函数 f 的类型为Elem => U,即 f 接受一个参数,参数的类型为容器元素的类型Elem,f 返回结果类型为 U。foreach 遍历集合的每个元素,并将f 应用到每个元素上。**sorted、sortBy**sorted:**按照元素自身进行排

2021-07-09 11:07:48 282 1

原创 scala 系列之 06scala 懒加载 lazy

7 懒加载 lazy惰性变量用法放在不可变变量之前;只有在调用惰性变量时才会去实例化这个变量,类似于java中单例模式的懒汉模式;作用:是将推迟复杂的计算,直到需要计算的时候才计算,而如果不使用,则完全不会进行计算。//没有lazy关键字的时候object LazyDemo { def init():Unit = { println("init") } def main(args: Array[String]): Unit = { val p = init()

2021-07-09 10:59:09 229

原创 kerberos 环境 MapReduce 跨平台提交

配置文件cdh yarn界面下载客户端配置文件下载后放在代码的conf目录中,下载krb5.conf与keytab文件放入conf文件夹中,如下:代码结构pom文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schema

2021-06-29 10:13:41 315

原创 sqoop 实操

sqoop常用参数安全环境下操作需要做安全认证常用命令命令名称对应类命令说明importImportTool将关系型数据库数据导入到HDFS、HIVE、HBASEexportExportTool将HDFS上的数据导出到关系型数据库codegenCodeGenTool获取数据库中某张表数据生成Java并打成Jar包create-hive-tableCreateHiveTableTool创建hive的表evalEvalSqlTool

2021-06-23 11:35:54 141

原创 sqoop 原理与部署

sqoop原理sqoop介绍Sqoop是Apache旗下的一款“hadoop和关系型数据库服务器之间传送数据”的工具。  导入数据:MySQL、Oracle导入数据到hadoop的hdfs、hive、hbase等数据存储系统。  导出数据:从hadoop的文件系统中导出数据到关系型数据库中。sqoop架构导入流程首先通过jdbc读取关系型数据库元数据信息,获取到表结构。根据元数据信息生成Java类。启动import程序,通过jdbc读取关系型数据库数据,并通过上一步的Ja

2021-06-23 11:34:53 152

原创 superset 报表

环境准备安装Python3cd /optwget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz解压&编译&安装tar -zxvf Python-3.6.0.tgzcd Python-3.6.0./configure --prefix=/usr/local/pythonmake && make install配置环境变量export PYTHON_HOME=/usr/l

2021-06-23 11:33:39 310

原创 gaussdb200 数据导入

数据导入方式概述GaussDB 200提供了灵活的数据入库方式:GDS、INSERT、COPY以及gsql元命令\copy。各方式具有不同的特点:GDS因其并行的特点,导入效率高,适用于大批量数据的入库;其他三种方式适用于小批量数据入库,可以考虑其特点自行选择。方式特点GDS通过GDS工具,采用多DN并行导入,导入效率高。适用于大批量数据入库。INSERT通过INSERT语句插入一行或多行数据,及从指定表插入数据。COPY通过COPY FROM STDIN语句直接向

2021-06-23 11:32:42 3877 1

原创 gaussdb200 数据导出

GDS导出数据准备工作# 准备导出目录mkdir -p /output_datachown -R gds_user:gdsgrp /output_data 创建外表DROP FOREIGN TABLE IF EXISTS product_info_ext;CREATE FOREIGN TABLE product_info_ext( product_price integer not null, product_id

2021-06-23 11:31:39 1212

原创 Linux 系列之八文件和目录管理

4 建立文件和目录4.1 建立目录:mkdir​ linux mkdir 命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录。命令格式:mkdir [-参数] 目录命令功能:​ 通过 mkdir 命令可以实现在指定位置创建以 DirName(指定的文件名)命名的文件夹或目录。要创建文件夹或目录的用户必须对所创建的文件夹的父文件夹具有写权限。并且,同一目录下所创建的文件夹(目录)不能相同(区分大小写)。参数:-m

2021-06-11 15:46:45 152 1

原创 Linux 系列之七目录结构、文件属性及链接

1 linux目录结构bin: 存放二进制可执行文件(ls,cat,mkdir等)boot: 存放用于系统引导时使用的各种文件dev: 用于存放设备文件etc:存放系统配置文件 /etc/profile, /etc/passwd ,/etc/shadowhome: 存放所有用户(除了root)文件的根目录lib:存放跟文件系统中的程序运行所需要的共享库及内核模块mnt:系统管理员安装临时文件系统的安装点opt:额外安装的可选应用程序包所放置的位置proc:虚拟文件系统,存放当前内存的映射

2021-06-11 15:45:28 308 1

原创 scala 系列之 05scala 数据结构

6 数据结构​ 在scala 编程中经常需要用到各种数据结构,比如数组(Array)、元组(Tuple)、列表(List)、映射(Map)、集合(Set)等。​ Scala同时支持可变集合和不可变集合,不可变集合从不可变,可以安全的并发访问;​ 不可变集合:scala.collection.immutable​ 可变集合: scala.collection.mutable​ Scala优先采用不可变集合,对于几乎所有的集合类,Scala都同时提供了可变和不可变的版本;

2021-06-11 15:44:22 452

原创 scala 系列之 04scala 方法和函数

5 方法与函数5.1 方法在scala中的操作符都被当成方法存在,比如说+、-、*、/1+2就是1.+(2)的调用,2.0 是doule类型,强调用Int类型的写法为1.+(2:Int)可以在idea中搜索Int类查看支持的方法方法声明与使用定义方法的语法:def 方法名([变量:变量类型,变量:变量类型]):返回值类型={方法体}其中:​ 在scala 中,方法里面的最后一个表达式的值就是方法的返回值,不需要return 返回;示例:定义无参无返回值的方法://

2021-06-11 15:42:52 310 1

原创 scala 系列之 03scala 控制结构

4 控制结构4.1 if 条件表达式if 语句用来实现两个分支的选择结构,语法如下:if(表达式1){ 语句块1}else if(表达式2){ 语句块2}else{ 语句块3}运行逻辑和java相同,这块内容省略。与java 不同的是, scala 可以通过if 语句实现 java 三目运算符的逻辑;4.2 while 循环scala 拥有与java相同的while、do while 循环。x = 1while(x <= 10){ print

2021-06-11 15:41:45 178

原创 scala 系列之 02scala 数据类型、变量、操作符、语句

3 数据类型、变量、操作符、语句3.1 基本数据类型scala 的基本类型有 8 种:Byte、Char、Short、Int、Long、Float、Double、BooleanScala中没有基本数据类型的概念,所有的类型都是对象。如上图所示:**Anyval:**代表所有基本类型。**AnyRef:**代表所以引用类型,包括 Scala class 和 Java class。**Any:**是所有类的超类。如果不知道表达式的结果是什么类型可以用Any。**Unit:**只有一个实例值

2021-06-11 15:40:29 1075

原创 scala 系列之 01scala 概述和开发环境搭建

1 scala介绍​ Scala是一门现代的多范式编程语言,平滑地集成了面向对象和函数式语言的特性,旨在以简练、优雅的方式来表达常用编程模式。​ Scala的设计吸收借鉴了许多种编程语言的思想,只有很少量特点是Scala自己独有的。​ Scala语言的名称来自于“可伸展的语言”,从写个小脚本到建立个大系统的编程任务均可胜任。​ 大教堂:几近完美的建筑物,花费很长时间建设,而一旦建成了就长时间保持不变;​ 集市:每天都会被集市中的人调整和扩展。​ Scala就

2021-06-11 15:37:49 1162

原创 gaussdb200 存储过程

gaussdb200存储过程声明部分:声明PL/SQL用到的变量,类型及游标,以及局部的存储过程和函数。DECLARE执行部分:过程及SQL语句,程序的主要部分。必选。BEGIN执行异常部分:错误处理。可选。EXCEPTION结束END;/存储过程简单示例DECLARE var varchar(20); num1 integer;BEGIN var := 'xiniu'; dbms_output.put_line('hello '||var);

2021-06-10 14:34:51 7095 1

原创 GaussDB200 部署

前言GaussDB安装需要使用fi manager,目前支持的centos最高版本为7.4,不能选择高于该版本。推荐配置内存16G,cpu核心数8C,硬盘300G。软件准备解压gaussdb.tar包,并解压至/opt目录下上传操作系统镜像CentOS-7-x86_64-DVD-1810.iso前置动作#修改主机名hostnamectl set-hostname yourhostname#修改hosts文件,增加yourip yourhostnameyourip yourhostname

2021-06-10 14:33:34 969

原创 gaussdb200 数据库设计

设计规范选择​ 在实际生产过程中,尤其是在模型设计的过程中经常会涉及到范式化问题,我们分为范式化和逆范式化两种。模型数据冗余性能范式化数据没有冗余,更新容易。当表的数量比较多,查询设计需要很多关联模型(join)时,会导致查询性能低下。逆范式化数据冗余将带来很好的读取性能 (因为不需要join很多表,而且通常反范式模型很少做更新操作)。需要维护冗余数据,从目前NoSQL的发展可以看到,对磁盘空间的消耗是可以接受的。​ 范式化跟逆范式化所要求的正好相反,在逆范式的

2021-06-10 14:32:09 699 1

原创 gaussdb200 常用函数

字符操作函数length(string bytea, encoding name )描述:指定encoding编码格式的string的字符数。在这个编码格式中,string必须是有效的。返回值类型:intSELECT length('jose', 'UTF8');/*length -------- 4(1 row)*/substring(string [from int] [for int])描述:截取子字符串,from int表示从第几个字符开始截取,for i

2021-06-10 14:28:34 5832

原创 gaussdb200 数据类型

数值类型整数类型名称描述存储空间范围TINYINT微整数,别名为INT1。1字节0 ~ 255SMALLINT小范围整数,别名为INT2。2字节-32,768 ~ +32,767INTEGER常用的整数,别名为INT4。4字节-2,147,483,648 ~ +2,147,483,647BINARY_INTEGER常用的整数INTEGER的别名,为兼容Oracle类型。4字节-2,147,483,648 ~ +2,147,483,64

2021-06-10 14:18:36 4481

原创 gaussdb200 实操

连接gaussdb切换用户su - omm加载环境变量source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile连接数据库gsql -d postgres -p 25308创建用户create user xiniu with password "xiniu_1688";创建数据库官方建议:用户自定义数据库数量不超过3个create database xiniu_db;退出gsql\q指定用户登陆,正常情况下不

2021-06-10 14:14:22 6267 3

原创 gaussdb200 理论

gauss200简介​ MPP即大规模并行处理(Massively Parallel Processing ),在数据库非共享集群中,每个节点都有独立的磁盘存储系统和内存系统,业务数据根据数据库模型和应用特点划分到各个节点上,每台数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,作为整体提供数据 库服务,非共享数据库集群有完全的可伸缩性、高可用、高性能、优秀的性价比、资源共享等优势。​ 典型特点: * 计算靠近数据,避免大量的数据迁移,获得更高的性能 * 无共享架构,相比共享架构拥有更高

2021-06-10 14:08:47 1451 1

原创 es on kibana 实操

集群操作查看集群健康情况GET /_cat/health?v查看索引状态GET /_cat/indices?v索引操作创建索引put /xiniu1删除索引delete /xiniu1创建索引并制定mapping映射PUT /xiniu{ "mappings": { "properties": { "title": { "type": "text" }, "name": { "type":

2021-06-07 11:36:34 68

原创 es 理论

elasticsearch简介​ Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。

2021-06-07 11:06:36 990

原创 安装 es 与 kibana

下载es、kibana包安装es集群解压elasticsearch安装包,修改配置文件vim /opt/elasticsearch-7.13.1/config/elasticsearch.yml每个节点修改成各自节点的hostname,"node.name network.host"修改为每个节点的hostname创建es用户、修改es目录所有者useradd espasswd eschown es:es -R /opt/elasticsearch-7.13.1修改

2021-06-07 11:04:43 181

原创 hive 数据导入 es

es-hadoop插件上传es-hadoop插件到集群准备hive数据-- 连接hivebeeline -u "jdbc:hive2://worker-1:10000/;principal=hive/worker-1@HAINIU.COM"-- 创建临时表create table if not exists xiniu.hivetable( pk string, col1 int, col2 boolean, col3 timestamp, col4 st

2021-06-07 10:55:39 1186

原创 Linux 系列之六用户实战

3 Linux用户实战3.1 查询用户3.1.1 用户信息查询执行 :[root@localhost ~]# cat /etc/passwd是的,没有错,不要怀疑,这个就是查看用户信息的文件 叫 passwd内容如下内容说明 :​ /etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:​ 用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell用户名:​ 是代表用户账号的字符串。通常长度不超过

2021-06-07 10:53:06 493

空空如也

空空如也

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

TA关注的人

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