自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MongoDB 与 Hive集成

前面已经说过很多数据库之间可以互相集成,今天也和大家说下MongoDB 与 Hive集成,其实MongoDB 与 Hive集成和Hbase 与 Hive集成有很多相似之处,都是到Hive中创建,只不过Hbase 与 Hive集成是Hive中创建的表名、行键、列簇名等都要和Hbase中的一一对应。那么MongoDB 与 Hive集成是不是也一样呢?下面就和大家说下。1.拷贝 jar 包版本要按安装的相关软件版本要求的来,jar 包可以去http://mvnrepository.com/下载就可以了,使用

2020-10-24 19:02:44 1085

原创 MongoDB的 高阶使用

前面已经和大家说过MongoDB 的基本查询和删除、修改等用法,下面就和大家说下MongoDB的一些高阶使用。索引MongoDB也和其它数据库一样,可以添加索引来查找,但也有很多不同的地方。在 MongoDB 上,索引能够提高读操作及查询性能。没有索引,MongoDB 必须扫描集合中的每一个文档,然后选择与查询条件匹配的文档,这种全表扫描的方式是非常低效的。MongoDB 索引的数据结构也是 B+树,它能存储一小部分集合的数据,具体来说就是存储集合中建有索引的一个或多个字段的值,而且按照值的升序或降序

2020-10-24 18:12:14 877

原创 Hortonworks启动0ozie的Web UI界面报错缺少extjs包解决办法

在启动Hortonworks时,进入Ambari的网页界面去启动0ozie后,要进入Web UI界面经常会出现一个错误,不知道大家有没遇到过如下图所示:如果进入不了UI界面可以尝试使用IP地址+11000端口再试下,报这个错时因为缺少jar包导致的,所以要到docket的操作界面去安装上面报错提示所缺少的jar包才行,具体解决办法如下:wget http://public-repo-1.hortonworks.com/HDP-UTILS-GPL-1.1.0.22/repos/centos7-ppc

2020-10-22 09:10:33 565

原创 MongoDB 之查询详解

查询就是获取存储在数据库中的数据。在 MongoDB 中,查询通常针对一个集合来操作。查询可以指定查询条件,只返回匹配的文档;还可以指定投影项,只返回指定的字段,减少返回数据到客户端的网络流量。1、MongoDB 查询文档使用 find() 方法。find() 方法以非结构化的方式来显示所有文档。语法MongoDB 查询数据的语法格式如下:db.collection.find(query, projection)参数说明:query :可选,使用查询操作符指定查询条件。projection

2020-10-15 09:41:05 2004 1

原创 MongoDB简介与Linux详细安装

前面已经和大家说过很多数据库,每个数据库都有自身的优缺点,而今天和大家说的MongoDB是以面向文档存储的数据库。是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。特性MongoDB 是

2020-10-13 20:24:02 362

原创 Go语言之单链表实现插入元素

单链表简介单链表是一种顺序存储的结构。有一个头结点,没有值域,只有连域,专门存放第一个结点的地址。有一个尾结点,有值域,也有链域,链域值始终为NULL。所以,在单链表中为找第i个结点或数据元素,必须先找到第i - 1 结点或数据元素,而且必须知道头结点,否则整个链表无法访问。示例:定义结构体package mainimport "fmt"type Object interface{}type Node struct { Data Object //定义数据域 Next

2020-10-08 20:18:38 979

原创 Go语言连接MySQL

很多语言都可以连接MySQL,像前面提到过的Java、Scala、python、pyspark等都可以连接MySQL,那么Go也一样可以连接。话不多说,直接上代码:package mainimport( "fmt" "database/sql" _ "github.com/go-sql-driver/mysql")func main() { //数据库信息 //用户名:密码@tcp(ip:端口号)/数据库名 con := "root:root

2020-10-08 11:10:55 274

原创 对Go中变量的生命周期理解

生命周期很好理解,就是正常能使用的变量的有效时间,超过时间限定后,变量就无法再生效,必须重新创建新的变量。变量的生命周期一般指的是在程序运行期间变量有效存在的时间间隔。对于在包一级声明的变量来说,它们的生命周期和整个程序的运行周期是一致的。而相比之下,局部变量的声明周期则是动态的:每次从创建一个新变量的声明语句开始,直到该变量不再被引用为止,然后变量的存储空间可能被回收。函数的参数变量和返回值变量都是局部变量。它们在函数每次被调用的时候创建。变量的生命周期与变量的作用域有着不可分割的联系:全局变量:

2020-09-30 13:25:29 452

原创 Go语言之变量逃逸(Escape Analysis)分析

前面已经详细分析过堆和栈的区别,变量是如何分配在堆和栈上的,go语言编译器会自动决定把一个变量放在栈还是放在堆,编译器会做逃逸分析(escape analysis),当发现变量的作用域没有跑出函数范围,就可以在栈上,反之则必须分配在堆。但有时我们希望函数局部变量尽量使用栈,全局变量、结构体成员使用堆分配等。那么到底该如何分配呢?Go语言将这个过程整合到了编译器中,命名为“变量逃逸分析”。通过编译器分析代码的特征和代码的生命周期,决定应该使用堆还是栈来进行内存分配。变量逃逸分析可以自动决定变量分配方式

2020-09-30 12:02:02 712

原创 Go语言中并发时的竞争状态

如果两个或者多个 goroutine 在没有相互同步的情况下,访问某个共享的资源,比如同时对该资源进行读写时,就会处于相互竞争的状态,这就是并发中的资源竞争。只要有并发,就一定会有抢占资源的情况发生。下面就举例说明下:package mainimport ( "fmt" "runtime" "sync" )var ( count int32 wg sync.WaitGroup )func main() {

2020-09-29 20:16:33 284

原创 Go语言之goroutine详解

有很多人对 goroutine还不死很理解,goroutine 是 Go语言中的轻量级线程实现,由 Go 运行时(runtime)管理。Go 程序会智能地将 goroutine 中的任务合理地分配给每个 CPU。goroutine由来在编写 Socket 网络程序时,需要提前准备一个线程池为每一个 Socket 的收发包分配一个线程。我们需要在线程数量和 CPU 数量间建立一个对应关系,以保证每个任务能及时地被分配到 CPU 上进行处理,同时避免多个任务频繁地在线程间切换执行而损失效率。虽然,线程池为

2020-09-29 19:45:17 1562

原创 使用通道发送和接收数据

前面已经说过通道的简介以及具体使用,那么通道是如何收发数据的,今天就和大家聊下。发送数据通道发送数据的格式通道的发送使用特殊的操作符<-,将数据通过通道发送的格式为:通道变量 <- 值通道变量:通过make创建好的通道实例。值:可以是变量、常量、表达式或者函数返回值等。值的类型必须与ch通道的元素类型一致。示例:使用 make 创建一个通道后,就可以使用<-向通道发送数据,代码如下:// 创建一个空接口通道ch := make(chan interface{})

2020-09-28 20:20:25 694

原创 Go语言中通道(channel)用于goroutine通信

通道是用来传递数据的一个数据结构。从设计上确保,在同一时刻只有一个 goroutine 能从中接收或放入数据。发送和接收都是原子操作,不会中断。Go语言中的通道(channel)是一种特殊的类型。在任何时候,同时只能有一个 goroutine 访问通道进行发送和获取数据。goroutine 间通过通道就可以通信。通道可用于两个 goroutine 之间通过传递一个指定类型的值来同步运行和通讯。操作符 <- 用于指定通道的方向,发送或接收。如果未指定方向,则为双向通道。ch <- v

2020-09-24 00:45:55 996

原创 Go语言中对于堆栈理解

在JAVA中相信大家对堆栈应该有个很清晰的认知。什么是堆栈?在计算机中堆栈的概念分为:数据结构的堆栈和内存分配中堆栈。数据结构的堆栈:堆:堆可以被看成是一棵树,如:堆排序。在队列中,调度程序反复提取队列中第一个作业并运行,因为实际情况中某些时间较短的任务将等待很长时间才能结束,或者某些不短小,但具有重要性的作业,同样应当具有优先权。堆即为解决此类问题设计的一种数据结构。栈:—种先进后出的数据结构。这里着重讲的是内存分配中的堆和栈。内存分配中的堆和栈栈(操作系统)∶由操作系统自动分配释放,

2020-09-23 19:24:45 808

原创 Go语言之切片(Slice) 详解

切片是对数组的抽象。切片本身不包含任何数据。它仅仅是底层数组的一个上层表示。对切片进行的任何修改都将反映在底层数组中。当若干个切片共享同一个底层数组时,对每一个切片的修改都会反映在底层数组中。Go语言中 数组的长度不可改变,但有时需要改变不数组长度,那怎么办呢?这时切片就应运而生了,Go中提供了一种灵活,功能强悍的内置类型切片(“动态数组”),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。定义切片// 可以声明一个未指定大小的数组来定义切片var identifie

2020-09-23 14:06:50 633

原创 Go语言之结构体详解

结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型。结构体定义结构体定义需要使用 type 和 struct 语句。struct 语句定义一个新的数据类型,结构体中有一个或多个成员。type 语句设定了结构体的名称。结构体的格式如下:type test struct { member definition member definition ... member defini

2020-09-23 11:10:23 602

原创 Go语言之地址强制类型转换

在其它语言中都有强制类型转换,只是表达说的方式不一样而已,但遵循的规则都是一样的,就是小转大不需要强制转换;而大转小需要强制类型转换;其实类型转换说白了就是用于将一种数据类型的变量转换为另外一种类型的变量。直接上代码:struct Test{ int Num; char *pcName; short sDate; char cha[2]; short sBa[4];}*p;假设p 的值为0x100000。如下表中表达式的值分别为多少? p + 0x1 = 0x_

2020-09-23 09:45:59 793

原创 论Go语言中指针数组和数组指针的不同

前面已经和大家详细的介绍了指针的用法,那么所谓的指针数组和数组指针到底有何变化,之间有什么联系呢?是否表示一个意思,还是有不同含义,下面就聊聊。指针数组首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身的大小决定,每一个元素都是一个指针,在32 位系统下任何类型的指针永远是占4 个字节。它是“储存指针的数组”的简称。数组指针首先它是一个指针,它指向一个数组。在32 位系统下任何类型的指针永远是占4 个字节,至于它指向的数组占多少字节,不知道,具体要看数组大小。它是“指向数组的指针”的简

2020-09-22 09:02:34 789

原创 Go 语言之指针(pointer)详解

很多人的理解可能以为指针是和spark中的游标一样,尤其是取数组中的值根据下标来取,其实不然,在这里,Go 语言中的指针所表示的是:一个指针变量指向了一个值的内存地址。类似于变量和常量,在使用指针前你需要声明指针。指针声明格式如下:var var_name *var-typevar-type 为指针类型,var_name 为指针变量名,* 号用于指定变量是作为一个指针。以下是有效的指针声明:var a *int // 指向整型var b *float32 // 指向浮点型

2020-09-17 18:22:28 1983

原创 Spark中DataFrame与Pandas中DataFrame相互转换

Spark中DataFrame前面已经给大家介绍过了,以及RDD、DataSet、DataFrame之间相互转换,而PySpark可以说是Spark和python的结合体,PySpark中也使用DataFrame,也可以与RDD、DataSet之间相互转换,其实python中有个Pandas库,也有DataFrame,是由多列Series组成的数据结构,有时需要将他们相互转化才能使用。Spark与Pandas中的DataFrame相互转换import pandas as pdfrom pyspark

2020-09-17 16:47:01 5504 1

原创 Spark之报错java.lang.StackOverflowError(栈溢出) 解决方案

前面在运行Spark项目的时候,突然就报了个错:java.lang.StackOverflowError,以前也没出现过这种情况,原来是栈溢出,内存不够导致的。需要在spark的配置文件中添加新的内存信息。vi /opt/soft/spark234/confcp spark-defaults.conf.template spark-defaults.conf vi spark-defaults.conf//添加以下配置信息spark.driver.extraJavaOptions="-

2020-09-17 14:16:55 2460 1

原创 Go 语言之常量定义与使用

常量和Java中的意思类似,就是被定义后,在程序运行时,不会被修改的量。Java中定义常量使用final 关键字,Scala中定义常量使用 val ,那么在Go语言中定义常量使用的是const.常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串。常量的定义:const identifier [type] = value定义常量的时候类型可以省略,例如:const str = "abcde"因为编译器可以根据变量的值来自己推断其类型,就像scala中一样。多个相同类型的声明

2020-09-16 19:25:56 1352

原创 Go语言fmt包中%(占位符)使用

Go语言软件包fmt使用与C语言的printf和scanf类似的功能,实现了格式化I / O函数。格式“动词”派生自C,但更简单。普通占位符占位符说明举例输出%v相应值的默认格式。Printf("%v", people){zhangsan}%+v打印结构体时,会添加字段名Printf("%+v", people){Name:zhangsan}%#v相应值的Go语法表示Printf("#v", people)main.Human{Name:“zhang

2020-09-16 15:05:48 3157

原创 使用Java连接Hive2

先在Linux中启动hiveserver2,进入beeline 新窗口打开:beeline -u jdbc:hive2://192.168.56.100:10000 -n root,IP是虚拟机里的URL。打开IDEA,首先还是导入依赖。<dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <ver

2020-09-16 11:32:31 563

原创 hortonworks 安装及打通远程连接MySQL

当下载好hortonworks以后最好放在有100G以上的硬盘上,不然是不够的,接下来就是导入到虚拟机中,hortonworks的版本不要用最新版,2.4版本左右的就可以了,可以导入到VMware中,也可以导入到vbox中,个人的话还是建议导入到vbox中,因为,每次虚拟机关机,再重新打开进入hortonworks的时候不仅要花费很长的时间,而且有时会出现各种莫名的错误导致启动失败,本人就栽过无数次跟头,下面就和大家说下如何把下载好的hortonworks导入到vbox中,vmware安装的话可以私下给我留

2020-09-16 00:48:29 354

原创 Spark连接Hbase并写入数据的两种方法

前面和大家聊过Spark和Hive的集成,以及如何连接MySQL,今天主要就说下Spark连接Hbase,这可能要复杂一点,首先Hbase是列式存储的,结构可能和前面所说的数据库不一样,这样就必须要转换,而且导的依赖包也不一样,不是在maven仓库中所下的。下面就和大家说下。导入依赖包接下来spark集成hbase,把hbase中lib下的以下jar包拷贝到spark中的jars文件夹下面:导入后重新启动Spark就可以了。有时会报zookeeper的错误,这时可以把zookeeper-3.4.6

2020-09-15 19:49:28 3829 4

原创 Ambari重置admin登陆密码

首先要正常安装成功Ambari以后,可能需要花的时间久一点;安装好了之后,这时要看下自己的IP地址是多少,可以用ip a命令查看,然后就可以登录网页进行登录了。这时输入的网址是查看到的ip:8080,这样就可以进入到登录界面;如果是使用vbox安装的话,那么就默认ip是127.0.0.1,直接输入127.0.0.1:8080就可以登录网页;如果是使用VMware安装的话,那么就使用查看到的ip,进入网页输入查看到的ip:8080就可以登录网页;就会出现要求输入登录账号和密码的界面,如下图所示:登

2020-09-14 20:01:18 3265

原创 Go语言基本结构和数据类型

前面已经给大家整理过Golang的安装和环境搭建,那么基本语法今天就和大家聊聊。其实定义一个Go语言的基本结构非常简单,也就几步而已:Golang基本语法Go 语言的基础组成有以下几个部分:包声明引入包函数变量语句 & 表达式注释示例:package mainimport "fmt"func main() { /* 这是一个Go语言 */ fmt.Println("Hello, Go!")}解析:第一行代码 pac

2020-09-10 19:57:00 647 2

原创 Go语言简介与详细安装教程

提到Go语言渴望能很多人会觉得很陌生,就像Scala语言一样,是个小众语言,不被广泛认知,其实现在世界上有很多的机器语言,如果让我们都去一一掌握的话也不现实,毕竟人的时间和经历有限。前面也和大家聊过几种语言,比如Scala、python,C、C++等等。。。Java就不多说了,这几种语言都各自有各自的优劣,所以今天iuhe大家说下另一种语言Golang。Go语言介绍起初,Golang创造出来是为了来取代C++。最终,虽然不能如愿对C++取而代之,但是其近C的执行性能和近解析型语言的开发效率以及近乎于完美

2020-09-10 01:40:14 827

原创 DStream之转换操作(Transformation)

与 RDDs 类似,转换允许修改输入 DStream 中的数据。DStreams 支持许多在普通 Spark RDD 上可用的转换算子。一些常见的转换操作定义如下:map(func)通过函数 func 传递源 DStream 的每个元素来返回一个新的DStream。flatMap(func)与 map 类似,但是每个输入项可以映射到 0 或多个输出项。filter(func)通过只选择 func 返回 true 的源 DStream 的记录来返回一个新的 DStream。repartition

2020-09-09 20:09:04 2251

原创 Spark Streaming 两种方式连接 Flume

Spark Streaming 通过 Push 和 Pull 两种方式对接 Flume 数据源。以 Spark Streaming 的角度来看,Push 方式属于推送(由 Flume 向 Spark 推送);而 Pull 属于拉取(Spark 拉取 Flume 的输出)。不论以何种方式,开发过程类似,都是由 Spark Streaming 对接 Flume 数据流,Flume 做为 Spark Streaming 的数据源。Push 和 Pull 两者的差别主要体现在Flume Sink 的不同,而 Fl

2020-09-08 20:00:24 957 1

原创 Spark Streaming读取kafka中数据详解

话不多说今天就给大家说下Spark Streaming如何读取Kafka中数据先导依赖包到pom.xml<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-streaming-kafka-0-10_2.11</artifactId> <version>2.3.4</version></dependency>&l

2020-09-07 23:49:22 903

原创 Spark Streaming之window(窗口操作)

Spark Streaming 还提供了窗口的计算,它允许通过滑动窗口对数据进行转换,窗口转换操作如下图 所示:在 Spark Streaming 中,数据处理是按批进行的,而数据采集是逐条进行的,因此在 Spark Streaming 中会先设置好批处理间隔,当超过批处理间隔的时候就会把采集到的数据汇总起来成为一批数据交给系统去处理。对于窗口操作而言,在其窗口内部会有 N 个批处理数据,批处理数据的大小由窗口间隔决定,而窗口间隔指的就是窗口的持续时间。在窗口操作中,只有窗口的长度满足了才会触发批数

2020-09-07 19:58:58 3801

原创 SparkStreaming之DStream

离散流或 DStream 是 Spark Streaming 提供的高级别抽象。它表示连续的数据流,可以是从源接收到的输入数据流,也可以是通过转换输入流生成的经过处理的数据流。在内部,DStream 由一系列连续的 RDDs 表示,RDDs 是 Spark 对不可变的分布式数据集的抽象。DStream 中的每个 RDD 包含来自某个间隔(batch interval)的数据,如下图所示:应用于DStream上的任何操作都转换为底层RDDs上的操作。Input DStreams 与 Receivers

2020-09-04 19:00:17 539

原创 SparkStreaming之StreamingContext应用

要初始化一个 Spark Streaming 程序,必须创建一个 StreamingContext 对象,该对象是 SparkStreaming 流处理的编程入口点。2.2版本SparkSession未整合StreamingContext,所以仍需单独创建。创建 StreamingContext 对象Spark Streaming 初始化的主要工作是创建 Streaming Context 对象,通过创建函数的参数指明 Master Server,设定应用名称,指定 Spark Streaming 处理

2020-09-04 16:53:48 1363

原创 Exception in thread “main“ java.lang.NoClassDefFoundError: org/apache/hadoop/hive/shims/ShimLoader

解决sqoop导数据到hive中报错的问题:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hive/shims/ShimLoader at org.apache.hadoop.hive.conf.HiveConf$ConfVars.<clinit>(HiveConf.java:370) at org.apache.hadoop.hive.conf.HiveConf.<cl

2020-09-03 18:04:19 1593

原创 Sqoop导数据到Hive中报错:java.io.IOException: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf

在使用Sqoop把MySQL数据导入到Hive中的时候报了一个错:ERROR tool.ImportTool: Import failed: java.io.IOException: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf at org.apache.sqoop.hive.HiveConfig.getHiveConf(HiveConfig.java:50) at org.a

2020-09-03 17:34:07 1432

原创 Spark核心之Spark Streaming

前面说到Spark的核心技术的时候,有和大家说过,有五大核心技术,不知道大家还记不记得;给大家回忆下,这五大核心技术:分布式计算引擎Spark Core 、基于Hadoop的SQL解决方案SparkSQL 、可以实现高吞吐量、具备容错机制的准实时流处理系统Spark Streaming、分布式图处理框架Spark GraphX和构建在Spark上的分布式机器学习库Spark MLlib,现在应该有个印象了吧,其它的我就不多说了,今天主要是对Spark Streaming做个简单介绍,以便理解。Sp

2020-09-03 00:44:21 1741

原创 Hadoop、Hive、Hbase常用端口大全

前面所说的hadoop、hive、hbase中会遇到各种端口,有的是默认的,有的是启动时要配置的端口,那么具体的端口对应的是哪个呢,配置参数又是什么呢?今天给大家整理下。首先说下hadoop中的常用端口:在此之前,先说下启动tomcat的端口,我想大家都不陌生,在IDEA上发布Java工程项目到Tomcat上使用的就是8080端口,不知道大家还有没有印象,还有我们设置的免密ssh,端口是22.hadoop中的常用端口HDFS中的端口内部可使用端口YARN相关端口Hive相关端口Hba

2020-09-02 23:28:47 10385

原创 Hive执行复杂查询突然卡住不动解决办法

有时使用hive进行一般的查询操作时,执行的很快,但是一遇到多表复杂查询就会出一个问题,会发现程序一直卡着不动了,也不报错,开始以为是mapreduce计算的慢,所以程序执行有点卡断,可是过了好一会还是卡着不动,这就有点无语了,最后没办法只有强制kill.查看日志没有报错.查看mr状态发现一直在ACCEPTED状态.说明mr有问题,执行mr job ,果然卡死.查询得知是因为yarn的物理内存过少,建议配置为自己的电脑运行内存大小或二倍运行内存大小.这时时候就要到hadoop的安装目录下的/etc

2020-09-02 19:35:32 7115

空空如也

空空如也

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

TA关注的人

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