开源中国

我们不支持 IE 10 及以下版本浏览器

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
博客专区 - 开源中国社区
  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

ClassLoader和双亲委派机制

前言:网上关于类加载器讲解的文章特别多,在学习的时候让我受益匪浅,某段时间觉得自己懂了。但是在昨天遇到一个问题,并去看Spark关于用户类加载的时候,它实现的类加载器让我看的很疑惑,半天没有转过来。我才发现自己原来根本不懂类加载器的原理,对双亲委派机制只是停留在字面上,知道会先找父但是不知道怎么去找的,所以今天把JDK关于ClassLoader的代码撸了一遍,把以前一些模糊的地方捋明白了,内心稍安。同时这也是我昨天遇到的问题的前篇,扫清后面问题的障碍,后续会把关于Spark的问题捋出来,再来分享 ## 三种缺省类加载器 当一个JVM启动的时候,Java默认有三种类加载器 + 启动(Bootstrap)类加载器:Bootstrap类加载器是由C和C++实现的类加载器,它负责将 `/lib` 或者由 `-Xbootclasspath` 指定位置下的类库加载到内存中。由于是`native`的,所以我们无法直接接触它,也无法直接引用它。在JDK的ClassLoader类里可以看到关于它的方法调用都是`private native`的 + 扩展(Exttension)类加载器:ExtClassLoader是由Sun公司提供的实现,它负责将 `< Java_Runtime_Home >/lib/ext` 或者由系统变量 `java.ext.dir` 指定位置中的类库加载到内存中,在 `sun.misc.Launch...
问津已非少年 发布于 2小时前 阅读 15

用Python实现一个大数据搜索引擎

搜索是大数据领域里常见的需求。Splunk和ELK分别是该领域在非开源和开源领域里的领导者。本文利用很少的Python代码实现了一个基本的数据搜索功能,试图让大家理解大数据搜索的基本原理。 布隆过滤器 (Bloom Filter) 第一步我们先要实现一个布隆过滤器。 布隆过滤器是大数据领域的一个常见算法,它的目的是过滤掉那些不是目标的元素。也就是说如果一个要搜索的词并不存在与我的数据中,那么它可以以很快的速度返回目标不存在。 让我们看看以下布隆过滤器的代码: class Bloomfilter(object): """ A Bloom filter is a probabilistic data-structure that trades space for accuracy when determining if a value is in a set. It can tell you if a value was possibly added, or if it was definitely not added, but it can't tell you for certain that it was added. """ def __init__(self, size): """Setup the BF with the appropriate size""" self.values = [False] * size self.size = size def hash_value(self, value): """Hash the value provided and scale it to fit the BF size""" ...
naughty 发布于 12小时前 阅读 470 评论 1

centos编译hadoop-3.0.0-beta1源码

最近在做ec模块(纠删码),需要建立源码编译环境。
南寻 发布于 2天前 阅读 49

Elasticsearch Java API 索引的增删改查(二)

本节介绍以下 CRUD API: 单文档 APIs * [Index API](document-apis/index-api.md) * [Get API](document-apis/get-api.md) * [Delete API](document-apis/delete-api.md) * [Delete By Query API](document-apis/delete-by-query-api.md) * [Update API](document-apis/update-api.md) 多文档 APIs * [Multi Get API](document-apis/multi-get-api.md) * [Bulk API](document-apis/bulk-api.md) * [Using Bulk Processor](document-apis/using-bulk-processor.md) Multi Get API Bulk API > 注意:所有的单文档的CRUD API,index参数只能接受单一的索引库名称,或者是一个指向单一索引库的alias。 ### Index API Index API 允许我们存储一个JSON格式的文档,使数据可以被搜索。文档通过index、type、id唯一确定。我们可以自己提供一个id,或者也使用Index API 为我们自动生成一个。 这里有几种不同的方式来产生JSON格式的文档(document): - 手动方式,使用原生的byte[]或者String - 使用Map方式,会自动转换成与之等价的JSON - 使用第三方库来序列化beans,如Jackson - 使用内置的帮助类 XContentFactory.jsonBuilder() #### 手动方式 [数据格式](https://www.elastic.co/...
quanke_ 发布于 1周前 阅读 162 点赞 1

Elasticsearch Java API - 客户端连接(TransportClient,PreBuiltXPackTransportClient)(一)

Elasticsearch Java API - 客户端连接(TransportClient,PreBuiltXPackTransportClient)
quanke_ 发布于 2周前 阅读 102

数据可视化(四)开源 GIS 技术简史

- 开源 GIS 技术简史 - 1.1、GIS 的起源: MOSS and GRASS - 1.2、GIS 的发展:GeoTools, GDAL, PostGIS 和 GeoServer - 1.3、创新和教育:开源项目驱动 - 1.4、开源 GIS 的商业支持 - Demo:A Full Stack Geo-enabled Internet of Things (IoT) Solution
RiboseYim 发布于 3周前 阅读 150

支持脚本的 Hive 自定义函数

提供一个可用于在 hive sql 中执行脚本的 UDF
zqq90 发布于 4周前 阅读 84

Elasticsearch 使用中文分词

本文演示了如何使用IK Analysis 插件来实现在 Elasticsearch 中的中文分词功能。
waylau 发布于 1个月前 阅读 489 评论 2

深度思考Spark Runtime机制

序言 在以往的博客一天一个函数系列中,我们集中精力攻克了一座又一座的spark中那些晦涩的语法,收获了不少知识。如果以战喻,那就是我们的游击战取得了局部的显著效果。但是要想撼动整个spark-streaming大厦,还需要对整个运行时的机制有一个深入性的了解,知道所谓的接口应用,调用都是一些工程性封装好的东西,这些只要经过熟练的训练即可,但是想要更好的运用,就必须从底层了解它的机制。 在深入理解运行时机制之前,我建议大家思考一下这个问题,为什么spark采用的计算模型是以宽依赖为分界线的DAG模式?在我看来有以下几个优势在里面,第一点是按照不同的stage划分,使得计算更加高效,窄依赖诸如x平方,可以直接以pipe的形式进行操作,而宽依赖诸如(x+y)的平方,它需要等父依赖就绪后才能计算,所以这样的划分能够使计算速率最大化。第二点是,由于分布式集群的不可控性,我们的数据可能要随时落盘,这样一来由于我们采用的是stage模式的处理,我们就可以将中间结果保存在磁盘上,而不会发生由于宕机使得数据全部丢失的情况。 基于以上概念,我们来谈谈一些专业术语以及spark运行时的架构。 Terminologies SparkContext SparkContext是整个Spark Application的核...
牧师-Panda 发布于 2个月前 阅读 839 评论 2 点赞 2

图解机器学习

警告:多图杀猫! 每当提到机器学习,大家总是被其中的各种各样的算法和方法搞晕,觉得无从下手。确实,机器学习的各种套路确实不少,但是如果掌握了正确的路径和方法,其实还是有迹可循的,这里我推荐SAS的Li Hui的这篇博客,讲述了如何选择机器学习的各种方法。   另外,Scikit-learn 也提供了一幅清晰的路线图给大家选择: 其实机器学习的基本算法都很简单,下面我们就利用二维数据和交互图形来看看机器学习中的一些基本算法以及它们的原理。(另外向Bret Victor致敬,他的 Inventing on principle 深深的影响了我) 所有的代码即演示可以在我的Codepen的这个Collection中找到。 首先,机器学习最大的分支的监督学习和无监督学习,简单说数据已经打好标签的是监督学习,而数据没有标签的是无监督学习。从大的分类上看,降维和聚类被划在无监督学习,回归和分类属于监督学习。 无监督学习 如果你的数据都没有标签,你可以选择花钱请人来标注你的数据,或者使用无监督学习的方法。 首先你可以考虑是否要对数据进行降维。 降维 降维顾名思义就是把高维度的数据变成为低维度。常见的降维方法有PCA, LDA, SVD等。 主成分分析 PCA 降维里最经典的方法是主成分分析PCA,也就...
naughty 发布于 2个月前 阅读 1254 评论 4 点赞 1

从源码角度对比Yarn下的App对任务失败的控制

在Yarn/MRV2/Spark里都有任务失败再重试的设置,Yarn作为资源管理框架,而MRV2/Spark作为计算框架,它们的失败重试有什么不同? 有哪些参数来控制失败重试? Spark on Yarn的时候参数又有什么影响? ## Yarn的AM失败重试 Yarn作为资源管理框架,由RM负责AM(ApplicationMaster),具体的任务是由AM自己负责,所以Yarn对于一个Job的重试是在AM层级上的,其参数为 `yarn.resourcemanager.am.max-attempts` 或 `yarn.resourcemanager.am.max-retries`,默认值为2,即如果一个Job的AM死掉了,RM会重新分配container重启AM一次,而对于container的挂掉,则由具体的AppMaster实现来管理,该参数判断代码如下: ```java // RMAppImpl.java public RMAppState transition(RMAppImpl app, RMAppEvent event) { int numberOfFailure = app.getNumFailedAppAttempts(); // other code... if (numberOfFailure >= app.maxAppAttempts) { app.isNumAttemptsBeyondThreshold = true; } app.rememberTargetTransitionsAndStoreState(event, new AttemptFailedFinalStateSavedTransition(), RMAppState.FAILED, RMAppState.FAILED); } ``` > 注意:如果一个Job失败了,可不一定会触发这个重试...
问津已非少年 发布于 2个月前 阅读 85

zookeeper集群搭建

zookeeper集群搭建,状态查看,分布式协调
Anuge 发布于 2个月前 阅读 473

从源码角度看Spark on yarn client & cluster模式的本质区别

首先区分下AppMaster和Driver,任何一个yarn上运行的任务都必须有一个AppMaster,而任何一个Spark任务都会有一个Driver,Driver就是运行SparkContext(它会构建TaskScheduler和DAGScheduler)的进程,当然在Driver上你也可以做很多非Spark的事情,这些事情只会在Driver上面执行,而由SparkContext上牵引出来的代码则会由DAGScheduler分析,并形成Job和Stage交由TaskScheduler,再由TaskScheduler交由各Executor分布式执行。 所以Driver和AppMaster是两个完全不同的东西,Driver是控制Spark计算和任务资源的,而AppMaster是控制yarn app运行和任务资源的,只不过在Spark on Yarn上,这两者就出现了交叉,而在standalone模式下,资源则由Driver管理。在Spark on Yarn上,Driver会和AppMaster通信,资源的申请由AppMaster来完成,而任务的调度和执行则由Driver完成,Driver会通过与AppMaster通信来让Executor的执行具体的任务。 # client与cluster的区别 对于yarn-client和yarn-cluster的唯一区别在于,yarn-client的Driver运行在本地,而AppMaster运行在yarn的一个节点上,他们之间进行远程通信,AppMaster只负责资源申请和释放(当然还有DelegationToken的刷新),然后等待Drive...
问津已非少年 发布于 2个月前 阅读 114

Kafka集群安装

Kafka是由LinkedIn开发的一个分布式的消息系统,提供了类似于JMS的特性,用于解决大数据消息生产者和消费者之间的消息传输
大大的微笑 发布于 2个月前 阅读 372

你想了解的Hive Query生命周期--钩子函数篇!

一个Hive SQL语句的执行需要经历哪些阶段? 在这些阶段中,我们可以做哪些事来影响它? Hive为我们提供了很多的钩子函数,我们可以怎样利用它为Hive实现扩展?
问津已非少年 发布于 3个月前 阅读 790 评论 2 点赞 2

用随机森林分类算法进行Iris 数据分类训练,是怎样的体验?

MLlib是Spark的机器学习(ML)库,旨在简化机器学习的工程实践工作,并方便扩展到更大规模。 MLlib由一些通用的学习算法和工具组成,包括分类、回归、聚类、协同过滤、降维等,同时还包括底层的优化原语和高层的管道API。 MLllib目前分为两个代码包:spark.mllib 包含基于RDD的原始算法API。 spark.ml ,提供了基于DataFrames高层次的API,可以用来构建机器学习管道,FEA-spk技术的机器学习就是基于spark.ml 包。 spark.ml 包,是基于DataFrame的,未来将成为Spark机器学习的主要API。它可以在分布式集群上进行大规模的机器学习模型训练,并且可以对数据进行可视化。 一、随机森林分类算法的介绍 随机森林顾名思义,是用随机的方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入时,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类(对应分类算法),然后看看哪一类被选择最多,就预测这个样本为那一类。 使用Spark MLlib随机森林算法存在不足,需要改进! 具体来讲,使用Spark MLlib进行模型的训练,需要进行大量的数据转化,列聚合为向量等。非常麻烦,并且不...
openfea 发布于 3个月前 阅读 325 评论 2

Apache Ignite核心特性介绍(2.1.0版)

本文大体上提供了一个Apache Ignite的完整功能一览表,读者可以总体上了解Ignite都包含了哪些功能。
李玉珏 发布于 4个月前 阅读 546 评论 17 点赞 2

Spark Graphx 实现图中极大团挖掘, 伪并行化算法

## 背景: 1. spark graphx并未提供极大团挖掘算法 2. 当下的极大团算法都是串行化的算法,基于[Bron–Kerbosch](https://en.wikipedia.org/wiki/Bron%E2%80%93Kerbosch_algorithm)算法 ## 思路: 1. spark graphx提供了连通图的算法,连通图和极大团都是无向图中的概念,极大团为连通图的子集 2. 利用spark graphx 找出连通图,在从各个连通图中,利用串行化的极大团算法,找出极大团 (伪并行化) 3. 对于关联性较强的图,找出来的连通图非常大,这时串行化的极大团算法,仍然会耗时很久,这里利用剪枝的思想减少样本数据量,但是对于大图,优化空间有限 4. 期待真正的并行化的极大团算法 ---------- ## 配置文件: graph_data_path=hdfs://localhost/graph_data out_path=hdfs://localhost/clique ck_path=hdfs://localhost/checkpoint numIter=50 剪枝次数 count=3 极大团顶点数大小 algorithm=2 极大团算法,1:个人实现 2:jgrapht percent=90 剪枝后的顶点数,占前一次的百分比,如果剪完后,还剩下90%的数据,那么剪枝效率已然不高 spark.master=local spark.app.name=graph spark.serializer=org.apache.spark.serializer.KryoSerializer spark.yarn.executor.memoryOverhead=20480 spark...
ktlb 发布于 4个月前 阅读 244 评论 1

OpenCV图像哈希计算及汉明距离的计算

OpenCV均值哈希与感知哈希计算,对比图像相似度
海森堡测不准兔子 发布于 4个月前 阅读 562 评论 1 点赞 1

从信息熵的角度来理解机器学习要优化的目标

  摘要:机器学习任务中最核心的工作是对构造合适的损失函数,并对其进行优化,得到最终的模型。那么如何来构造损失函数,常用的构造函数背后有哪些理论的支撑,本篇文章从熵的角度来解析,希望对对读者起到抛装引玉的作用。 一、 基础概念 信息量 对于离散概率,定义p_i的信息量为 可以理解为需要查找多少次可以找到对应的离散值,比如概率0.125,对应的信息量是3,也就是说需要至少折半查找3次才能找到对应的离散取值。 信息熵(Information entropy) 衡量信息的不确定性(对于人来说),熵越小,信息就越确定。通俗的说,可以从几个方面来描述,比如人判断一件事情时有把握的程度、信息压缩编码时最小需要的位数。简单的说,熵反应了信息量。定义如下 交叉熵(Cross Information entropy) 如果一件事情的不确定性为0,那么信息熵也为0,所以信息熵可以理解为消除事件不确定性所要付出的代价,而实际当中很难采用最真实的概率分布来对事件进行判断,而是采用一种接近真实的概率分布,比如q来拟合真实的场景,将q带入信息熵的公式就可以得出交叉熵的定义 交叉熵所代表的含义是,采用非真实概率分布q下,要消除事件的不确定性所付出的代价,通常情况下,交叉熵要比信息熵大...
saintqdd 发布于 4个月前 阅读 393 点赞 3

73款阿里巴巴开源软件详解!

详细解读阿里巴巴开源技术,包括框架、组件、引擎、数据库/存储、平台/系统、解决方案、工具、中间件、Web Sever、设计等十大类73款!
阿里巴巴

用Python实现一个大数据搜索引擎

搜索是大数据领域里常见的需求。Splunk和ELK分别是该领域在非开源和开源领域里的领导者。本文利用很少的Python代码实现了一个基本的数据搜索功能,试图让大家理解大数据搜索的基本原理。 布隆过滤器 (Bloom Filter) 第一步我们先要实现一个布隆过滤器。 布隆过滤器是大数据领域的一个常见算法,它的目的是过滤掉那些不是目标的元素。也就是说如果一个要搜索的词并不存在与我的数据中,那么它可以以很快的速度返回目标不存在。 让我们看看以下布隆过滤器的代码: class Bloomfilter(object): """ A Bloom filter is a probabilistic data-structure that trades space for accuracy when determining if a value is in a set. It can tell you if a value was possibly added, or if it was definitely not added, but it can't tell you for certain that it was added. """ def __init__(self, size): """Setup the BF with the appropriate size""" self.values = [False] * size self.size = size def hash_value(self, value): """Hash the value provided and scale it to fit the BF size""" ...
naughty 发布于 12小时前 阅读 470 评论 1

ClassLoader和双亲委派机制

前言:网上关于类加载器讲解的文章特别多,在学习的时候让我受益匪浅,某段时间觉得自己懂了。但是在昨天遇到一个问题,并去看Spark关于用户类加载的时候,它实现的类加载器让我看的很疑惑,半天没有转过来。我才发现自己原来根本不懂类加载器的原理,对双亲委派机制只是停留在字面上,知道会先找父但是不知道怎么去找的,所以今天把JDK关于ClassLoader的代码撸了一遍,把以前一些模糊的地方捋明白了,内心稍安。同时这也是我昨天遇到的问题的前篇,扫清后面问题的障碍,后续会把关于Spark的问题捋出来,再来分享 ## 三种缺省类加载器 当一个JVM启动的时候,Java默认有三种类加载器 + 启动(Bootstrap)类加载器:Bootstrap类加载器是由C和C++实现的类加载器,它负责将 `/lib` 或者由 `-Xbootclasspath` 指定位置下的类库加载到内存中。由于是`native`的,所以我们无法直接接触它,也无法直接引用它。在JDK的ClassLoader类里可以看到关于它的方法调用都是`private native`的 + 扩展(Exttension)类加载器:ExtClassLoader是由Sun公司提供的实现,它负责将 `< Java_Runtime_Home >/lib/ext` 或者由系统变量 `java.ext.dir` 指定位置中的类库加载到内存中,在 `sun.misc.Launch...
问津已非少年 发布于 2小时前 阅读 15

小论各种编程语言的动态SQL机制

本文梳理了动态SQL相关机制,介绍了动态SQL如何防范注入式攻击以及各个编程语言实现动态SQL机制的办法。
SamYjy 发布于 14小时前 阅读 7

Spark在Hadoop的HDFS中读取数据

Spark在Hadoop的HDFS中读取数据 本文的前提是已经安装了Spark和Hadoop,安装方法可以参考我之前的两篇文章Hadoop安装及配置 —— MacOS High Sierra和Spark 笔记|教程 —— 安装 (Standalone Ubuntu|Mac)。 首先我们从本地系统复制一个样本txt文件(请自行准备)到Hadoop的HDFS中。启动Hadoop,然后进入Hadoop根目录,运行下面命令: bin/hdfs dfs -copyFromLocal /localPATH/test.txt 或者下面命令也行,两者功能一样 bin/hadoop fs -put /localPATH/test.txt /yourPATHinHDFS 该txt文件会自动复制到你的HDFS中创建的文件夹中,请在http://localhost:50070页面中,点导航栏Utilities >> Browse the file system进入子页面查看。或者也可以在hadoop根目录输入bin/hadoop fs -ls /命令查看。 然后打开spark-shell,输入下面代码: 1 2 scala> val textFile = sc.textFile("hdfs://localhost:9000/yourPATHinHDFS/test.txt") scala> textFile.collect 就会输出之前txt文件内容的string数组,读取数据成功。 注意:上面代码中的localhost:9000要根据你自己的IP地址和port(端口)决定,可以在Hadoop根目录的etc/hadoop/core-site.xml文件中查找。如果你按照我之前的Hadoop配...
N先生 发布于 14小时前 阅读 3

【转载】spark读取HDFS文件和保存数据到HDFS

def main(args: Array[String]): Unit = {       val conf = new SparkConf()       conf.set("spark.master", "local")       conf.set("spark.app.name", "spark demo")       val sc = new SparkContext(conf);       // 读取hdfs数据       val textFileRdd = sc.textFile("hdfs://m2:9820/README.md")       val fRdd = textFileRdd.flatMap { _.split(" ") }       val mrdd = fRdd.map { (_, 1) }       val rbkrdd = mrdd.reduceByKey(_+_)       // 写入数据到hdfs系统       rbkrdd.saveAsTextFile("hdfs://m2:9820/wcresult")   }   转载:https://www.cnblogs.com/heml/p/6186109.html...
xyzlove 发布于 9小时前 阅读 2

K均值聚类

K均值(k-means)算法 a、选择 K 个中心点(随机选择 K 行) b、把每个数据点分配到离它最近的中心点 c、重新计算每类中的点到类中心距离的平均值(也就是说,得到长度为 p 的 均值向量,这里的 p 是变量的个数) d、分配每个数据点到它的最近的中心点 f、重复步骤(c)和(d)直到所有的观测值不再分配或是达到最大的迭代次数(R把10次作为默认的迭代次数)   在 R 中把观测值分成 k 组并使得观测值到指定的聚类中心的平方的总和为最小,也就是说在步骤(b)和(d)中,每个观测值被分配到使下式得到最小值的那一类中: :表示第 i 个观测值中第 j 个变量的值 :表示第 k 个类中第 j 个变量的均值,其中 p 是变量的个数 kmeans(x,centers) K均值的函数格式 kmeans(x,centers) x:表示数值的数据集(矩阵或数据框) centers:要提取的聚类数目 a、函数返回类的成员、类中心、平方和(类内平方和、类间平方和、总平方和)和类大小。 b、K均值距聚类能出处理比层次聚类更大的数据集,观测值不会永远被分到一类中。均值的使用意味着所有的内变量必须是连续的,并且这个方法很有可能被异常值影响。它在非凸聚类(例如 U型)情况下会变的很差 c、由于 K 均值聚类在开始要随机选择 k 个中心...
不愿透露性别的某名宿 发布于 2周前 阅读 2

Elasticsearch 使用中文分词

本文演示了如何使用IK Analysis 插件来实现在 Elasticsearch 中的中文分词功能。
waylau 发布于 1个月前 阅读 489 评论 2

Hive安装及与Spark的集成配置

  本博客主要介绍SparkSql基于Hive作为元数据的基本操作,包括以下内容: 1、Hive安装 2、Spark与Hive的集成 3、SparkSql的操作 注:在操作本博客的内容时,需要安装Hadoop和Spark。 其中hadoop安装可参考:https://my.oschina.net/u/729917/blog/1556872 spark安装可参考:https://my.oschina.net/u/729917/blog/1556871 1、Hive安装 a)、安装Mysql数据库,此步骤自行百度。 b)、官网下载Hive:http://mirror.bit.edu.cn/apache/hive/,作者下载后放在了目录/home/hadoop/tools/apache-hive-2.2.0-bin.tar.gz下。 c)、移动到指定目录并解压:作者是解压到/usr/local/目录下,并且作者的Hadoop和Spark均是安装在此目录下。 sudo mv /home/hadoop/tools/apache-hive-2.2.0-bin.tar.gz /usr/local/apache-hive-2.2.0-bin/ sudo tar -zxvf apache-hive-2.2.0-bin.tar.gz d)、配置环境变量 vim ~/.bashrc export HIVE_HOME=/usr/local/apache-hive-2.2.0-bin export PATH=$PATH:${HIVE_HOME}/bin  环境变量生效 source ~/.bashrc e)、在conf目录下新建一个hive-site.xml,配置hive信息,使用mysql保存hive元数据信息 hadoop@Master:/usr/local/apache-hive-2.2.0-bin/conf$...
萧萧风雨 发布于 5天前 阅读 5

R语言中日期和时间处理

    在R基础包中提供了两类的时间数据,一类是Date日期数据,不包括时间和时区信息,另一类是POSIXct/POSIXlt类型数据,其中包括了日期、时间和时区信息。一般来讲,R语言中建立时序数据是通过字符型转化而来,但由于时序数据形式多样,而且R中存贮格式也是五花八门,例如Date/ts/xts/zoo/tis/fts等等。总之处理起来也比较麻烦,这篇文章介绍用lubridate包来处理。 lubridate包 该主要有两类函数,一类用于处理时点数据(timeinstants),另一类则用于处理时段数据(time spans)。虽然这些基础功能R base也能实现,但是操作起来会比较麻烦。一下两者对时间数据处理的对比 解析日期与时间(Parsing dates and times) 使用lubridate包识别日期前,我们需要告诉它年(y)月(m)日(d)的排列顺序,而函数本省就是这个几个字母的组合, > ymd(20170629);myd(06201729);dmy(29062017) [1] "2017-06-29" [1] "2017-06-29" [1] "2017-06-29"     在此基础上,如果需要读取含具体时间的数据,可以在函数里再加上小时(h)分钟(m)和秒(s);如果需要读入的时间具有特定时区,那就用tz选项来指定 > test_date <- ymd_hms("2017-06-29-12-01-30", tz = "Pacific/Auck...
不愿透露性别的某名宿 发布于 23小时前 阅读 2

分组计算描述性统计量

aggregate() 它首先将数据进行分组(按行),然后对每一组数据进行函数统计,最后把结果组合成一个比较nice的表格返回。根据数据对象不同它有三种用法,分别应用于数据框(data.frame)、公式(formula)和时间序列(ts) aggregate(x, by, FUN, ..., simplify = TRUE) aggregate(formula, data, FUN, ..., subset, na.action = na.omit) aggregate(x, nfrequency = 1, FUN = sum, ndeltat = 1, ts.eps = getOption("ts.eps"), ...) > str(mtcars) #不同类型汽车道路测试的数据框类型数据: 'data.frame': 32 obs. of 11 variables: $ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ... $ cyl : num 6 6 4 6 8 6 8 4 4 6 ... $ disp: num 160 160 108 258 360 ... $ hp : num 110 110 93 110 175 105 245 62 95 123 ... $ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ... $ wt : num 2.62 2.88 2.32 3.21 3.44 ... $ qsec: num 16.5 17 18.6 19.4 17 ... $ vs : num 0 0 1 1 0 1 0 1 1 1 ... $ am : num 1 1 1 0 0 0 0 0 0 0 ... $ gear: num 4 4 4 3 3 3 3 4 4 4 ... $ carb: num 4 4 1 1 2 1 4 2 2 4 ... > a...
不愿透露性别的某名宿 发布于 3周前 阅读 1

多列联系表

table()生成多维列表 > mytable <- xtabs(~ Treatment+Sex+Improved, data=Arthritis) > mytable , , Improved = None Sex Treatment Female Male Placebo 19 10 Treated 6 7 , , Improved = Some Sex Treatment Female Male Placebo 7 0 Treated 5 2 , , Improved = Marked Sex Treatment Female Male Placebo 6 1 Treated 16 5 ftable() 生成一种紧凑而吸引人的方式输出多维列联表 > ftable(mytable) #将mytable作为参数传入fatable() Improved None Some Marked Treatment Sex Placebo Female 19 7 6 Male 10 0 1 Treated Female 6 5 16 Male 7 2 5   边际及比例计算 > margin.table(mytable, 1) #计算第一个变量 Treatment的边际频数(即求个数和) Treatment Placebo Treated 43 41 > margin.table(mytable, 2) Sex Female Male 59 25 > margin.table(mytable, 2) Sex Fema...
不愿透露性别的某名宿 发布于 3周前 阅读 1

独立性检验

卡方独立性检验 chisq.test()对而二维表的行变量和列变量进行卡方独立性检验 > library(vcd) > mytable <- xtabs(~Treatment+Improved, data=Arthritis) > chisq.test(mytable) Pearson's Chi-squared test data: mytable X-squared = 13.055, df = 2, p-value = 0.001463 #p-value 表示从总体中抽取的样本行变量与列变量是互相独立的概率,p<a(=0.05)一般认为发生的概率很小 #统计学上的解释 #假设 H0: 行变量与列变量互相独立, H1:行变量与列变量不独立,通过卡方检验,计算出p值,然后与a(=0.05)进行比较, P < a(=0.05)则认为两个变量独立的概率比0.05还要小,一般不会发生,所以拒绝H0,接受H1 > mytable <- xtabs(~Improved+Sex, data=Arthritis) > chisq.test(mytable) Pearson's Chi-squared test data: mytable X-squared = 4.8407, df = 2, p-value = 0.08889 #p>a(0.05)则接受H0,拒绝H1,表示没有充分的证据说明两者是不独立的   Fisher精确检验 fisher.test()进行Fisher精确检验,Fisher精确检验的原假设是:边界固定的列联表中行和列是互相独立的,调用格式为 fisher.test(mytable),其中mytable是一个二维列联表 > mytable <- xtabs(~Trea...
不愿透露性别的某名宿 发布于 3周前 阅读 1

相关性的度量

assocstats() 计算而为列表中的phi系数,列联系数和Cramer's V系数 > library(vcd) > mytable <- xtabs(~Treatment+Improved, data=Arthritis) > assocstats(mytable) X^2 df P(> X^2) Likelihood Ratio 13.530 2 0.0011536 Pearson 13.055 2 0.0014626 Phi-Coefficient : NA # Contingency Coeff.: 0.367 #c系数 Cramer's V : 0.394 #V系数 较大的值,意外较强的相关性,vcd包也提供了一个kappa()函数,可以计算混淆矩阵Cohen's kappa值以及加权的kappa值。(举例来说,混淆矩阵可以表示两粒评判者对于一系列对象进行分两类所得记过的一致程度)    
不愿透露性别的某名宿 发布于 3周前 阅读 1

【转载+原创】pandas DataFrame与spark DataFrame联系与区别

具体区别如下,不过我发现pandas可以取出某行某列的数(.ix[i,j]或.iloc[i,j]);但是spark DataFrame不能取出第几行第几列的数,只筛选取出列/某些行(比较诡异) Pandas Spark 工作方式 单机single machine tool,没有并行机制parallelism 不支持Hadoop,处理大量数据有瓶颈 分布式并行计算框架,内建并行机制parallelism,所有的数据和操作自动并行分布在各个集群结点上。以处理in-memory数据的方式处理distributed数据。 支持Hadoop,能处理大量数据 延迟机制 not lazy-evaluated lazy-evaluated 内存缓存 单机缓存 persist() or cache()将转换的RDDs保存在内存 DataFrame可变性 Pandas中DataFrame是可变的 Spark中RDDs是不可变的,因此DataFrame也是不可变的 创建 从spark_df转换:pandas_df = spark_df.toPandas() 从pandas_df转换:spark_df = SQLContext.createDataFrame(pandas_df) 另外,createDataFrame支持从list转换spark_df,其中list元素可以为tuple,dict,rdd list,dict,ndarray转换 已有的RDDs转换 CSV数据集读取 结构化数据文件读取 HDF5读取 JSON数据集读取 EXCEL读取 Hive表读取   外部数据库读取 index索引 自动创建 没有index索引,若需要需要额...
xyzlove 发布于 12小时前 阅读 1

相关

cor()和cov() 相关系数可以用来描述定量变量之间的关系,相关系数的符号(+-)表明关系的方向(正相关或负相关),其值大小表示关系的强弱程度(完全不相关时为0,完全相关时为1) Pearson积差相关系数衡量了两个定量变量之间的线性相关程度 Spearman等级相关系数则衡量分级定序变量之间的相关程度 Kendall’s Tau相关系数也是一种非参数的等级相关度量 cov()函数用来计算协方差 cor()函数用来计算上述三种相关系数, 参数很多,格式为 cor(x, use= ,method= )   参数     描述 x     矩阵或数据框     use     指定缺失数据的处理方式。可选的方式为 all.obs(假设不存在缺失的数据--遇到缺失数据是将报错) everything(遇到缺失是,相关系数的计算结果将被missing) complete.obs(行删除) pairwise.complete.obs(成对删除,pairwise deletion) 默认参数为:use=“everything” method     指定系数的类型。可选类型为pearson、spearman或kendall 默认参数为:method=“pearson” 例 > states<- state.x77[,1:6] > cov(states) #计算协方差和方差 #在概率论和统计学中,协方差用于衡量两个变量的总体误差,而方差是协方差的一...
不愿透露性别的某名宿 发布于 3周前 阅读 2

相关性的显著性检验

cor.test() 使用cor.test()函数对单个Pearson、Spearman、Kendall相关系数进行检验,格式为 cor.test(x,y,laternative = ,method =) x、y:要检验相关性的变量 alternative:指定双侧检验或单侧检验,取值为 two.side,less,或者greater                     当研究的假设为总体的相关系数小于 0 时,请使用alternative = “less”                     当研究的假设为总体的相关系数大于 0 时,使用alternative=“greater” method:指定要计算的相关类型(pearson、kendall、speraman) 例 > cor.test(states[,3], states[,5]) Pearson's product-moment correlation data: states[, 3] and states[, 5] t = 6.8479, df = 48, p-value = 1.258e-08 alternative hypothesis: true correlation is not equal to 0 95 percent confidence interval: 0.5279280 0.8207295 sample estimates: cor 0.7029752 corr.test() psych包中提供的corr.test()函数可以一次做更多的事情,该函数可以为Pearson、Pearmen或Kendall相关计算相关矩阵和显著水平 例 > library(psych) > corr.test(states, use="complete") Call:corr.test(x = states, use = "...
不愿透露性别的某名宿 发布于 3周前 阅读 3

Spark性能优化总结

近期优化了一个spark流量统计的程序,此程序跑5分钟小数据量日志不到5分钟,但相同的程序跑一天大数据量日志各种失败。经优化,使用160 vcores + 480G memory,一天的日志可在2.5小时内跑完,下面对一些优化的思路方法进行梳理。 优化的目标 保证大数据量下任务运行成功 降低资源消耗 提高计算性能 三个目标优先级依次递减,首要解决的是程序能够跑通大数据量,资源性能尽量进行优化。 基础优化 这部分主要对程序进行优化,主要考虑stage、cache、partition等方面。 Stage 在进行shuffle操作时,如reduceByKey、groupByKey,会划分新的stage。同一个stage内部使用pipe line进行执行,效率较高;stage之间进行shuffle,效率较低。故大数据量下,应进行代码结构优化,尽量减少shuffle操作。 Cache 本例中,首先计算出一个baseRDD,然后对其进行cache,后续启动三个子任务基于cache进行后续计算。 对于5分钟小数据量,采用StorageLevel.MEMORY_ONLY,而对于大数据下我们直接采用了StorageLevel.DISK_ONLY。DISK_ONLY_2相较DISK_ONLY具有2备份,cache的稳定性更高,但同时开销更大,cache除了在executor本地进行存储外,还需走网络传输至其他节点。后续我们的优化,会保证execu...
hblt-j 发布于 3周前 阅读 1

单因素方差分析

单因素方法分析 > library(multcomp) > attach(cholesterol) > table(trt) trt 1time 2times 4times drugD drugE 10 10 10 10 10 > aggregate(response,by=list(trt),FUN=mean) #求各组均值 Group.1 x 1 1time 5.78197 2 2times 9.22497 3 4times 12.37478 4 drugD 15.36117 5 drugE 20.94752 > aggregate(response,by=list(trt),FUN=sd) #求各组标准差 Group.1 x 1 1time 2.878113 2 2times 3.483054 3 4times 2.923119 4 drugD 3.454636 5 drugE 3.345003 > fit <- aov(response ~ trt) #检测组间差异 > summary(fit) Df Sum Sq Mean Sq F value Pr(>F) trt 4 1351.4 337.8 32.43 9.82e-13 *** #Anova对治疗方式(trt)的F检验非常显著(p<0.0001),说明五种疗法的效果不同 Residuals 45 468.8 10.4 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 #gplots包中的plotmeans()可用来绘制带有置信区间的组均值图形 > library(gplots) > plotmeans(response ~ trt,xlab="Treatment",ylab="Response",main="Me...
不愿透露性别的某名宿 发布于 3周前 阅读 1

双因素方差分析

在双因素方差分析中,受试者被分配到两因子的交叉类别组中,以ToothGrowth数据集为例,随机分配 60  只豚鼠,分别采用两种喂食方法(橙汁或维生素C),各喂食方法中抗坏血酸含量有三种水平(0.5mg,1mg或2mg),每种处理组合都被分配只豚鼠。牙齿长度为因变量,如下 > attach(ToothGrowth) > table(supp,dose) #各设计单元中样本大小都相同,表明该设计是均衡设计 dose supp 0.5 1 2 OJ 10 10 10 VC 10 10 10 > aggregate(len, by=list(supp,dose), FUN=mean) #计算各单元的均值 Group.1 Group.2 x 1 OJ 0.5 13.23 2 VC 0.5 7.98 3 OJ 1.0 22.70 4 VC 1.0 16.77 5 OJ 2.0 26.06 6 VC 2.0 26.14 > aggregate(len, by=list(supp,dose), FUN=sd) #计算各单元的方差 Group.1 Group.2 x 1 OJ 0.5 4.459709 2 VC 0.5 2.746634 3 OJ 1.0 3.910953 4 VC 1.0 2.515309 5 OJ 2.0 2.655058 6 VC 2.0 4.797731 > dose <- factor(dose) #将 does转化问因子,这样aov()函数就将它当作一个分组变量,而不是数值型协变量 > ...
不愿透露性别的某名宿 发布于 3周前 阅读 1

深圳人口返乡模拟图

#导入数据 #处理标记线的数据 #标记点的数据 #使用remapC()绘制 #效果图   绘制以深圳为地点,到各个省为终点的动态迁徙图,各函数介绍可以参考本博客的 REmap包介绍及使用,均有详细介绍,这篇为实际应用 数据在附件 导入数据 > library(REmap) > options(remap.js.web = T) #将结果保存在工作目录下,避免R关掉后图片被删除,可以通过getwd()函数的得到工作目录,取出图片 #读取数据 > MigrateData <- read.csv('C:\\Users\\Xu\\Desktop\\MigrateDemo.csv',encoding='gb2312',header = F) > head(MigrateData) V1 V2 1 湖南 11580 2 广西 11207 3 湖北 9235 4 贵州 9689 5 河南 9378 6 江西 12484 > names(MigrateData) <- c('province','values') #命名列   处理标记线的数据 MarkLie_Data表示要传入绘制标记线(此项目就是迁徙路径线)的数据 包含三列,第一列 origin:起点,我们设置为深圳,第二列 destination 终点,第三列指定线条颜色color(因为在markLineControl里设置线条颜色容易出错) > markLine_data <- data.frame(origin = rep("深圳",nrow(MigrateData)), + destination = MigrateData[1:nrow(MigrateDa...
不愿透露性别的某名宿 发布于 2周前 阅读 10

各种编程语言连接MySQL数据库方式总结

本文简要介绍了程序链接数据库的机制并系统总结了php、Python、Java和C++编程语言连接MySQL数据库的准备以及配置方式,各给出一个操作插入作为示例测试连接的情况。
SamYjy 发布于 3天前 阅读 138

73款阿里巴巴开源软件详解!

详细解读阿里巴巴开源技术,包括框架、组件、引擎、数据库/存储、平台/系统、解决方案、工具、中间件、Web Sever、设计等十大类73款!
阿里巴巴

图解机器学习

警告:多图杀猫! 每当提到机器学习,大家总是被其中的各种各样的算法和方法搞晕,觉得无从下手。确实,机器学习的各种套路确实不少,但是如果掌握了正确的路径和方法,其实还是有迹可循的,这里我推荐SAS的Li Hui的这篇博客,讲述了如何选择机器学习的各种方法。   另外,Scikit-learn 也提供了一幅清晰的路线图给大家选择: 其实机器学习的基本算法都很简单,下面我们就利用二维数据和交互图形来看看机器学习中的一些基本算法以及它们的原理。(另外向Bret Victor致敬,他的 Inventing on principle 深深的影响了我) 所有的代码即演示可以在我的Codepen的这个Collection中找到。 首先,机器学习最大的分支的监督学习和无监督学习,简单说数据已经打好标签的是监督学习,而数据没有标签的是无监督学习。从大的分类上看,降维和聚类被划在无监督学习,回归和分类属于监督学习。 无监督学习 如果你的数据都没有标签,你可以选择花钱请人来标注你的数据,或者使用无监督学习的方法。 首先你可以考虑是否要对数据进行降维。 降维 降维顾名思义就是把高维度的数据变成为低维度。常见的降维方法有PCA, LDA, SVD等。 主成分分析 PCA 降维里最经典的方法是主成分分析PCA,也就...
naughty 发布于 2个月前 阅读 1254 评论 4 点赞 1

警惕,大数据已经侵入到你生活的方方面面

大数据这个词,几乎每天都会听到。不过谈到这个词的,要么是科技公司介绍新技术、要么是专家学者介绍未来发展趋势,对于普通人来说,似乎在我们的印象中只是“很大一堆数据”而已,与我们的生活似乎没有太大的关系,该上班上班、该吃饭吃饭、该逛街逛街、该旅行旅行,似乎这种看不见摸不着的东西,距离我们还很遥远。 其实对我们普通人来说,大数据并不只是简单的“很大一堆数据”,如果这些数据被充分分析、利用,那么就可以通过方方面面来影响我们的生活,不仅更便利,而且直接可以提升幸福感。 出行更顺畅 出行可能是我们在每天运用大数据最多的地方。奥维云网董事长文建平告诉我们,我们只需要输入想去的旅游地点和行程要求,大数据可以帮助我们自动找到最合适的旅游行程,通过与在线旅游服务的对接,提供最优出行交通方案,完成旅游出行的行程安排,帮助我们节约旅游成本、优化出行效率。 除了开车,公共交通也能利用大数据带来的优势。比如估测下一班公交车离该站台的位置、车上乘客数、拥挤程度、到达时间等信息。使我们合理安排候车时间、即时调整出行路线、提高出行速率。有的智能公交站牌到站时间精确到分。 家居生活更智能 在智能家居领域,大数据也同样起到了关...
行走在旅途中 发布于 2天前 阅读 85 评论 2

Elasticsearch Java API 索引的增删改查(二)

本节介绍以下 CRUD API: 单文档 APIs * [Index API](document-apis/index-api.md) * [Get API](document-apis/get-api.md) * [Delete API](document-apis/delete-api.md) * [Delete By Query API](document-apis/delete-by-query-api.md) * [Update API](document-apis/update-api.md) 多文档 APIs * [Multi Get API](document-apis/multi-get-api.md) * [Bulk API](document-apis/bulk-api.md) * [Using Bulk Processor](document-apis/using-bulk-processor.md) Multi Get API Bulk API > 注意:所有的单文档的CRUD API,index参数只能接受单一的索引库名称,或者是一个指向单一索引库的alias。 ### Index API Index API 允许我们存储一个JSON格式的文档,使数据可以被搜索。文档通过index、type、id唯一确定。我们可以自己提供一个id,或者也使用Index API 为我们自动生成一个。 这里有几种不同的方式来产生JSON格式的文档(document): - 手动方式,使用原生的byte[]或者String - 使用Map方式,会自动转换成与之等价的JSON - 使用第三方库来序列化beans,如Jackson - 使用内置的帮助类 XContentFactory.jsonBuilder() #### 手动方式 [数据格式](https://www.elastic.co/...
quanke_ 发布于 1周前 阅读 162 点赞 1

分布式企业框架

Springmvc+mybatis+shiro+Dubbo+ZooKeeper+Redis+KafKa
门墩 发布于 3天前 阅读 15 点赞 1

解决kettle调度效率低,不可高并发调度方法

“我在spoon里面运行一个作业只要几秒种,但是在命令行中运行却要好几十秒?” “并行同时运行几个job,就把内存撑爆了,Kettle好占资源呀!”   Kettle作为用户规模最多的开源ETL工具,强大简洁的功能深受广大ETL从业者的欢迎。但kettle本身的调度监控功能却非常弱。连Pentaho官方都建议采用crontab(Unix平台)和计划任务(Windows平台)来完成调度功能。调用kettle作业,实际上是通过pan和kitchen命令去调用。每一次调用都会重新初始化kettle运行环境,这个过程占用大量的时间。并且每启动一个kettle运行环境都相当于启动一个JVM进程。每个JVM则会占用几百兆(默认设置)的内存。所以同时运行几个作业,也会消耗大量内存资源。极端情况则可能会导致kettle内存溢出,产生致命错误。 https://my.oschina.net/u/944575/blog/1557410 http://www.taskctl.com/forum/detail_124.html 上述是Taskctl出的解决方案,但是如果我本身不愿意在多学习一个调度工具,其实也是可以用这个的。安装这个服务后,默认会生成两个调度插件,分别对应trans和job两种类型的。我们现在需要做的就是用crontab调用调度插件,配合着正确的参数值,就可以正常调度了,非常简单,而且效率也很高。 下面是...
波波夫空袭 发布于 3周前 阅读 28 评论 1 点赞 1

druid单机部署

1、环境信息  2、安装zookeeper  3、安装druid  4、启动druid  5、验证druid  6、遇到的坑 1、环境信息  Centos6.5   32GB 8C  Zookeeper 3.4.5  Druid 0.9.2 2、安装zookeeper tar -xzf zookeeper-3.4.6.tar.gz cd zookeeper-3.4.6 cp conf/zoo_sample.cfg conf/zoo.cfg ./bin/zkServer.sh start 3、安装 druid  3、1解压druid  3、2 执行 bin/init 初始化化环境 4、启动druid  4、1启动5个终端执行下面5个命名,或者启动一个将命令执行丢入后台 java `cat conf-quickstart/druid/historical/jvm.config | xargs` -cp "conf-quickstart/druid/_common:conf-quickstart/druid/historical:lib/*" io.druid.cli.Main server historical java `cat conf-quickstart/druid/broker/jvm.config | xargs` -cp "conf-quickstart/druid/_common:conf-quickstart/druid/broker:lib/*" io.druid.cli.Main server broker java `cat conf-quickstart/druid/coordinator/jvm.config | xargs` -cp "conf-quickstart/druid/_common:conf-quickstart/druid/coordinator:lib/*" io.druid.cli.Main server coordinator java `cat conf-quickstart/druid/overlord/jvm.config | x...
张欢19933 发布于 2周前 阅读 21

Kettle7.0 报错database type with plugin id [HIVE2] couldn't be found!

问题描述:java调用trans的时候,如果在数据类型加上Hive2,则会出现报错 database type with plugin id [HIVE2] couldn't be found! 数据类型配置如图: 查了好多资料,没找到如何解决,所以找了个迂回的方式。 报错主要是因为java调用的时候数据类型没加载完全,每次TransMeta/JobMeta运行检查的时候就会报错。 TransMeta transMeta = new TransMeta(filename); 解决方法: 前提:     加载Hive的Trans的数据类型,设置为不共享,     新建JOB把Trans加载进去     启用本机/或者服务器的Carte(因为Carte相当于启动spoon,即把所有信息加载进去) 过程:     通过java调用没有Hive数据类型的JOB是可以通过,调用JOB运行在Carte里,Carte运行JOB的时候加载Trans就会避免出现这样的报错。 远程调用Carte:https://my.oschina.net/ilovetao/blog/1576746        
目光 发布于 3天前 阅读 6

Hadoop安装

  最近在学习Hadoop的知识,现将安装过程记录下,安装Hadoop需要安装java。使用的机器是在VM上安装的unbutu kylin14.04 64位。 一、准备所需要的软件: 1、Java:1.8 2、Scala:2.10 3、Hadoop:2.7.3 二、在VM上装三台虚拟机 其中三台的IP是: Master:192.168.163.128 Worker1:192.168.163.129 Worker2:192.168.163.130 同时,通过命令vim /etc/hostname,修改这三台虚拟机的主机名分别为Master,Worker1,Worker2,以便区分。 2、Master设置hosts hadoop@Master:~$ sudo vim /etc/hosts 127.0.0.1 localhost 127.0.1.1 ubuntu 192.168.163.128 Master 192.168.163.129 Worker1 192.168.163.130 Worker2 同时在Worker1和Worker2机器上进行同样的设置 三、创建hadooop用户(三台机器上均要创建) 1、创建用户 sudo useradd -m hadoop -s /bin/bash 2、设置密码 sudo passwd hadoop 3、设置管理员权限 sudo adduser hadoop sudo 二、切换到hadoop用户 su hadoop 以下所有的操作均在hadoop用户下操作 四、安装SSH(因为后面需要配置集群,所在集群上都需要安装) 为了能够远程访问这台机器,需要安装SSH,并且设置免密码登录 1、安装openssh-server:如果安装慢...
萧萧风雨 发布于 1个月前 阅读 34

Python机器学习

在docker里整了一个Anaconda镜像还挺大,参考文章 https://elitedatascience.com/python-machine-learning-tutorial-scikit-learn 导入numpy,它提供了对更高效的数值计算的支持;导入Pandas,一个支持数据框的便利库。Scikit-Learn可以直接处理数字矩阵。 import numpy as np 改变被导入模组在当前模组中的名称。和import some other = some一样效果。 开始导入机器学习功能了。来自model_selection模块的train_test_split()函数。这个模块包含了很多可以帮助我们在模型之间进行选择的工具。 建议用户尽可能多的使用绝对导入,防止混淆使用同名模块。from sklearn.model_selection import train_test_split 导入整个预处理模块。这包含用于缩放,转换和刻录数据的实用程序。.代表当前目录,..代表上一层目录,...代表上上层目录。 from sklearn import preprocessing 模型“家族”和实际模型之间有什么区别? 一个“家族”模型是广泛的模型类型,如随机森林,支持向量机,线性回归模型等。在每个模型族中,在拟合并调整其参数后,将得到一个实际模型。 导入随机森林家族。from sklearn.ensemble import RandomForestRegressor 目前关注于训练一个随机森林并调整其参数。...
Tom杰 发布于 5天前 阅读 4

可视化设计器的正确打开方式

FEA可视化设计器越来越强大了 强大到你真的有点不认识它了! 你不信? 跟我来看看 一、背景和样式全面改版 —————————————————————————————————————————————————— 背景更好看 样式更精致 鼠标弹触式全屏切换特效 二、超级方便好用的键盘快捷键 —————————————————————————————————————————————————— 遇到频繁切换或大量操作时,不再吐血! 选中要设置的图表后,用键盘快捷键就可以大幅提升设计效率。 1、Delete键,删除图表 2、Ctrl+q,重绘设计图 3、Ctrl+m,调出或关闭控制面板 4、ESC键,控制刻度尺开关 5、↑,↓,←,→ 上下左右方向键,对选中的图表进行位置调整  此种方式只适合微调,如果要快速、大范围拖动图表,还是用鼠标比较好! 三、鼠标控制图表缩放 —————————————————————————————————————————————————— 选中图表后,拖住鼠标就可以任意缩放。按住shift键,则可以实现等比例缩放。 四、控制面板更好用 ————————————————————————————————————————————...
openfea 发布于 3个月前 阅读 30

zookeeper集群搭建

zookeeper集群搭建,状态查看,分布式协调
Anuge 发布于 2个月前 阅读 473

Apache Ignite(V2.2.0)中文开发手册

Apache Ignite(V2.2.0)中文开发手册,已经翻译完成,托管在作业部落上,同时也挂在了社区的官网。
李玉珏 发布于 1个月前 阅读 137

Flink流计算编程--Flink中allowedLateness详细介绍及思考

1、简介 Flink中借助watermark以及window和trigger来处理基于event time的乱序问题,那么如何处理“late element”呢? 也许有人会问,out-of-order element与late element有什么区别?不都是一回事么? 答案是一回事,都是为了处理乱序问题而产生的概念。要说区别,可以总结如下: 1、通过watermark机制来处理out-of-order的问题,属于第一层防护,属于全局性的防护,通常说的乱序问题的解决办法,就是指这类; 2、通过窗口上的allowedLateness机制来处理out-of-order的问题,属于第二层防护,属于特定window operator的防护,late element的问题就是指这类。 下面我们重点介绍allowedLateness。 2、allowedLateness介绍 默认情况下,当watermark通过end-of-window之后,再有之前的数据到达时,这些数据会被删除。 为了避免有些迟到的数据被删除,因此产生了allowedLateness的概念。 简单来讲,allowedLateness就是针对event time而言,对于watermark超过end-of-window之后,还允许有一段时间(也是以event time来衡量)来等待之前的数据到达,以便再次处理这些数据。 默认情况下,如果不指定allowedLateness,其值是0,即对于watermark超过end-of-window之后,还有此win...
张欢19933 发布于 2个月前 阅读 11

Kylin + Mondrian + Saiku

   由eBay开源的一个大数据OLAP框架,2014年11月加入了Apache,项目名字也改成了“Apache Kylin”,Apache Kylin是唯一来自中国的Apache顶级开源项目,定位于在Hadoop平台之上实现传统数据仓库,商业智能的能力,提供交互式的,多维分析能力,并提供在传统数据仓库技术所不能做到的超大规模数据集的快速查询,并使用普通的PC硬件,而无需采购专用的,私有的一体机或者高端存储等      kylin是一个MOLAP系统,通过预计算的方式缓存了所有 需要查询的的数据结果,需要大量的存储空间(原数据量的10+倍)。一般我们要分析的数据可能存储在关系数据库、HDFS上数据、文本文件、excel 等。kylin主要是对hive中的数据进行预计算,利用hadoop的mapreduce框架实现     当前已经有超过100多家国内国外的公司正式使用Kylin作为其大数据分析平台的核心。包括eBay、Glispa、微软、Expedia、百度、美团、网易、京东、唯品会、中国移动、中国电信、国泰君安、华泰证券、联想、〇PP〇、魅族、去哪儿等等。Apache Kylin被用到了诸多如数据仓库,用户行为分析,流量(日志)分析,自助分析平台,电商分析,广告效果分析,实时分析,数据服务平台等各种场景 目录 系统架构 组件介绍 ...
hblt-j 发布于 2周前 阅读 8

深度思考Spark Runtime机制

序言 在以往的博客一天一个函数系列中,我们集中精力攻克了一座又一座的spark中那些晦涩的语法,收获了不少知识。如果以战喻,那就是我们的游击战取得了局部的显著效果。但是要想撼动整个spark-streaming大厦,还需要对整个运行时的机制有一个深入性的了解,知道所谓的接口应用,调用都是一些工程性封装好的东西,这些只要经过熟练的训练即可,但是想要更好的运用,就必须从底层了解它的机制。 在深入理解运行时机制之前,我建议大家思考一下这个问题,为什么spark采用的计算模型是以宽依赖为分界线的DAG模式?在我看来有以下几个优势在里面,第一点是按照不同的stage划分,使得计算更加高效,窄依赖诸如x平方,可以直接以pipe的形式进行操作,而宽依赖诸如(x+y)的平方,它需要等父依赖就绪后才能计算,所以这样的划分能够使计算速率最大化。第二点是,由于分布式集群的不可控性,我们的数据可能要随时落盘,这样一来由于我们采用的是stage模式的处理,我们就可以将中间结果保存在磁盘上,而不会发生由于宕机使得数据全部丢失的情况。 基于以上概念,我们来谈谈一些专业术语以及spark运行时的架构。 Terminologies SparkContext SparkContext是整个Spark Application的核...
牧师-Panda 发布于 2个月前 阅读 839 评论 2 点赞 2

数据可视化(四)开源 GIS 技术简史

- 开源 GIS 技术简史 - 1.1、GIS 的起源: MOSS and GRASS - 1.2、GIS 的发展:GeoTools, GDAL, PostGIS 和 GeoServer - 1.3、创新和教育:开源项目驱动 - 1.4、开源 GIS 的商业支持 - Demo:A Full Stack Geo-enabled Internet of Things (IoT) Solution
RiboseYim 发布于 3周前 阅读 150

随机森林

随机森林 是一种有组成式的有监督学习方法,在随机森林中,我们同时生成多个预测模型,并将模型的结果汇总以提升分类准确率 随机森林算法 涉及对样本单元和变量进行抽样,从而生成大量决策树,对每个样本单元来说,所有决策树依次对其进行分类,所有决策树预测类别中的众数类别即为随机森林所预测的一个样本单元的类别 假设训练集中共有 N 个样本单元,M个变量,则随机森林算法如下 (1)从训练集中随机有放回的抽取 N 个,生成大量的决策树 (2)在每一个节点随机抽取 m < M 个变量,将其作为分割该节点的候选变量,每一个节点处的变量数应一致 (3)完整生成所有决策树,无需剪枝(最小节点为1) (4)终端节点的所属类别由节点对应的众数类别决定 (5)对于新的观测点,用所有的树对其进行分类,其类别由多数决定原则生成 生成树时没有用到的样本点所对应的类别可由生成树估计,与其真实类别比较即可的得到 袋外预测(out - of - bag,OOB) 误差,无法获得验证集时,这是随机森林的一大优势, randomForest包中的randomForest()函数可用与生成随机森林。函数默认生成500棵树,并且默认在每个节点处抽取sqrt(M)个变量,最小节点为1 对乳腺癌数据预测恶性类 > library(rand...
不愿透露性别的某名宿 发布于 2周前 阅读 4

Kibana

Kibana是一个基于浏览器页面的Elasticsearch前端展示工具。Kibana全部使用HTML语言和Javascript编写的,查询语法是基于Lucene的查询语法。允许布尔运算符、通配符和字段筛选。注意关键字要大写 全文搜索 在搜索栏输入login,会返回所有字段值中包含login的文档 使用双引号包起来作为一个短语搜索 "like Gecko" 字段搜索:也可以按页面左侧显示的字段搜索 限定字段全文搜索:field:value 精确搜索:关键字加上双引号 filed:"value" http.code:404 搜索http状态码为404的文档 字段本身是否存在 _exists_:http:返回结果中需要有http字段 _missing_:http:不能含有http字段 通配符 ? 匹配单个字符 * 匹配0到多个字符 ? * 不能用作第一个字符,例如:?text *text 模糊搜索 ~:在一个单词后面加上~启用模糊搜索, first~ 也能匹配到 frist 还可以指定需要多少相似度,如:cromm~0.3 会匹配到 from 和 chrome 数值范围0.0 ~ 1.0,默认0.5,越大越接近搜索的原始值 近似搜索 在短语后面加上~,如:"select where"~3 表示 select 和 where 中间隔着3个单词以内 范围搜索 数值和时间类型的字段可以对某一范围进行查询,如: length:[100 TO 200] date:{"now-6h" TO "now"} [ ] 表示端...
hblt-j 发布于 2周前 阅读 7

Elasticsearch Java API - 客户端连接(TransportClient,PreBuiltXPackTransportClient)(一)

Elasticsearch Java API - 客户端连接(TransportClient,PreBuiltXPackTransportClient)
quanke_ 发布于 2周前 阅读 102

ClassLoader和双亲委派机制

前言:网上关于类加载器讲解的文章特别多,在学习的时候让我受益匪浅,某段时间觉得自己懂了。但是在昨天遇到一个问题,并去看Spark关于用户类加载的时候,它实现的类加载器让我看的很疑惑,半天没有转过来。我才发现自己原来根本不懂类加载器的原理,对双亲委派机制只是停留在字面上,知道会先找父但是不知道怎么去找的,所以今天把JDK关于ClassLoader的代码撸了一遍,把以前一些模糊的地方捋明白了,内心稍安。同时这也是我昨天遇到的问题的前篇,扫清后面问题的障碍,后续会把关于Spark的问题捋出来,再来分享 ## 三种缺省类加载器 当一个JVM启动的时候,Java默认有三种类加载器 + 启动(Bootstrap)类加载器:Bootstrap类加载器是由C和C++实现的类加载器,它负责将 `/lib` 或者由 `-Xbootclasspath` 指定位置下的类库加载到内存中。由于是`native`的,所以我们无法直接接触它,也无法直接引用它。在JDK的ClassLoader类里可以看到关于它的方法调用都是`private native`的 + 扩展(Exttension)类加载器:ExtClassLoader是由Sun公司提供的实现,它负责将 `< Java_Runtime_Home >/lib/ext` 或者由系统变量 `java.ext.dir` 指定位置中的类库加载到内存中,在 `sun.misc.Launch...
问津已非少年 发布于 2小时前 阅读 15

【转载】spark读取HDFS文件和保存数据到HDFS

def main(args: Array[String]): Unit = {       val conf = new SparkConf()       conf.set("spark.master", "local")       conf.set("spark.app.name", "spark demo")       val sc = new SparkContext(conf);       // 读取hdfs数据       val textFileRdd = sc.textFile("hdfs://m2:9820/README.md")       val fRdd = textFileRdd.flatMap { _.split(" ") }       val mrdd = fRdd.map { (_, 1) }       val rbkrdd = mrdd.reduceByKey(_+_)       // 写入数据到hdfs系统       rbkrdd.saveAsTextFile("hdfs://m2:9820/wcresult")   }   转载:https://www.cnblogs.com/heml/p/6186109.html...
xyzlove 发布于 9小时前 阅读 2

OOM汇总

1.python pandas最多处理100M数据,再大就会OOM 2.spark中collect(),也要注意数据量太大时会OOM(我今天用2.3G数据collect就出现了OOM) 如果数据量比较大的时候,尽量不要使用collect函数,因为这可能导致Driver端内存溢出问题。 只有当整个数据集能在单机内存中放得下时,才考虑用collect(),因为collect()不能用在大规模数据集中
xyzlove 发布于 9小时前

【转载+原创】pandas DataFrame与spark DataFrame联系与区别

具体区别如下,不过我发现pandas可以取出某行某列的数(.ix[i,j]或.iloc[i,j]);但是spark DataFrame不能取出第几行第几列的数,只筛选取出列/某些行(比较诡异) Pandas Spark 工作方式 单机single machine tool,没有并行机制parallelism 不支持Hadoop,处理大量数据有瓶颈 分布式并行计算框架,内建并行机制parallelism,所有的数据和操作自动并行分布在各个集群结点上。以处理in-memory数据的方式处理distributed数据。 支持Hadoop,能处理大量数据 延迟机制 not lazy-evaluated lazy-evaluated 内存缓存 单机缓存 persist() or cache()将转换的RDDs保存在内存 DataFrame可变性 Pandas中DataFrame是可变的 Spark中RDDs是不可变的,因此DataFrame也是不可变的 创建 从spark_df转换:pandas_df = spark_df.toPandas() 从pandas_df转换:spark_df = SQLContext.createDataFrame(pandas_df) 另外,createDataFrame支持从list转换spark_df,其中list元素可以为tuple,dict,rdd list,dict,ndarray转换 已有的RDDs转换 CSV数据集读取 结构化数据文件读取 HDF5读取 JSON数据集读取 EXCEL读取 Hive表读取   外部数据库读取 index索引 自动创建 没有index索引,若需要需要额...
xyzlove 发布于 12小时前 阅读 1

用Python实现一个大数据搜索引擎

搜索是大数据领域里常见的需求。Splunk和ELK分别是该领域在非开源和开源领域里的领导者。本文利用很少的Python代码实现了一个基本的数据搜索功能,试图让大家理解大数据搜索的基本原理。 布隆过滤器 (Bloom Filter) 第一步我们先要实现一个布隆过滤器。 布隆过滤器是大数据领域的一个常见算法,它的目的是过滤掉那些不是目标的元素。也就是说如果一个要搜索的词并不存在与我的数据中,那么它可以以很快的速度返回目标不存在。 让我们看看以下布隆过滤器的代码: class Bloomfilter(object): """ A Bloom filter is a probabilistic data-structure that trades space for accuracy when determining if a value is in a set. It can tell you if a value was possibly added, or if it was definitely not added, but it can't tell you for certain that it was added. """ def __init__(self, size): """Setup the BF with the appropriate size""" self.values = [False] * size self.size = size def hash_value(self, value): """Hash the value provided and scale it to fit the BF size""" ...
naughty 发布于 12小时前 阅读 470 评论 1

Spark在Hadoop的HDFS中读取数据

Spark在Hadoop的HDFS中读取数据 本文的前提是已经安装了Spark和Hadoop,安装方法可以参考我之前的两篇文章Hadoop安装及配置 —— MacOS High Sierra和Spark 笔记|教程 —— 安装 (Standalone Ubuntu|Mac)。 首先我们从本地系统复制一个样本txt文件(请自行准备)到Hadoop的HDFS中。启动Hadoop,然后进入Hadoop根目录,运行下面命令: bin/hdfs dfs -copyFromLocal /localPATH/test.txt 或者下面命令也行,两者功能一样 bin/hadoop fs -put /localPATH/test.txt /yourPATHinHDFS 该txt文件会自动复制到你的HDFS中创建的文件夹中,请在http://localhost:50070页面中,点导航栏Utilities >> Browse the file system进入子页面查看。或者也可以在hadoop根目录输入bin/hadoop fs -ls /命令查看。 然后打开spark-shell,输入下面代码: 1 2 scala> val textFile = sc.textFile("hdfs://localhost:9000/yourPATHinHDFS/test.txt") scala> textFile.collect 就会输出之前txt文件内容的string数组,读取数据成功。 注意:上面代码中的localhost:9000要根据你自己的IP地址和port(端口)决定,可以在Hadoop根目录的etc/hadoop/core-site.xml文件中查找。如果你按照我之前的Hadoop配...
N先生 发布于 14小时前 阅读 3

小论各种编程语言的动态SQL机制

本文梳理了动态SQL相关机制,介绍了动态SQL如何防范注入式攻击以及各个编程语言实现动态SQL机制的办法。
SamYjy 发布于 14小时前 阅读 7

R语言中日期和时间处理

    在R基础包中提供了两类的时间数据,一类是Date日期数据,不包括时间和时区信息,另一类是POSIXct/POSIXlt类型数据,其中包括了日期、时间和时区信息。一般来讲,R语言中建立时序数据是通过字符型转化而来,但由于时序数据形式多样,而且R中存贮格式也是五花八门,例如Date/ts/xts/zoo/tis/fts等等。总之处理起来也比较麻烦,这篇文章介绍用lubridate包来处理。 lubridate包 该主要有两类函数,一类用于处理时点数据(timeinstants),另一类则用于处理时段数据(time spans)。虽然这些基础功能R base也能实现,但是操作起来会比较麻烦。一下两者对时间数据处理的对比 解析日期与时间(Parsing dates and times) 使用lubridate包识别日期前,我们需要告诉它年(y)月(m)日(d)的排列顺序,而函数本省就是这个几个字母的组合, > ymd(20170629);myd(06201729);dmy(29062017) [1] "2017-06-29" [1] "2017-06-29" [1] "2017-06-29"     在此基础上,如果需要读取含具体时间的数据,可以在函数里再加上小时(h)分钟(m)和秒(s);如果需要读入的时间具有特定时区,那就用tz选项来指定 > test_date <- ymd_hms("2017-06-29-12-01-30", tz = "Pacific/Auck...
不愿透露性别的某名宿 发布于 23小时前 阅读 2

Presto架构及原理

 Presto 是 Facebook 推出的一个基于Java开发的大数据分布式 SQL 查询引擎,可对从数 G 到数 P 的大数据进行交互式的查询,查询的速度达到商业数据仓库的级别,据称该引擎的性能是 Hive 的 10 倍以上。Presto 可以查询包括 Hive、Cassandra 甚至是一些商业的数据存储产品,单个 Presto 查询可合并来自多个数据源的数据进行统一分析。Presto 的目标是在可期望的响应时间内返回查询结果,Facebook 在内部多个数据存储中使用 Presto 交互式查询,包括 300PB 的数据仓库,超过 1000 个 Facebook 员工每天在使用 Presto 运行超过 3 万个查询,每天扫描超过 1PB 的数据。 目录: presto架构 presto低延迟原理 presto存储插件 presto执行过程 presto引擎对比 Presto架构 Presto查询引擎是一个Master-Slave的架构,由下面三部分组成: 一个Coordinator节点 一个Discovery Server节点 多个Worker节点 Coordinator: 负责解析SQL语句,生成执行计划,分发执行任务给Worker节点执行 Discovery Server: 通常内嵌于Coordinator节点中 Worker节点: 负责实际执行查询任务,负责与HDFS交互读取数据 Worker节点启动后向Discovery Server服务注册,Coordinator从Discovery Server获得可以正常...
hblt-j 发布于 1天前 阅读 6

在CentOS6.9中搭建HBase

在CentOS6.9中搭建HBase
自东土大唐而来 发布于 1天前 阅读 2

oozie  web ui  kerberos访问

本例使用FireFox浏览器: 1.在Firefox浏览器URL里输入:about:config 2.设置以下两个配置项: network.negotiate-auth.trusted-uris=.bigdata network.auth.use-sspi=false 3.重启Firefox浏览器。 4.下载安装一个Windows MIT Kerberos:(链接http://web.mit.edu/kerberos/dist/#kfw-4.0) 如:http://web.mit.edu/kerberos/dist/kfw/4.1/kfw-4.1-amd64.msi 5.将Linux系统上Kerberos配置内容(/etc/krb5.conf)拷贝到本地C:\ProgramData\MIT\Kerberos5\krb5.ini文件中。 6.在安装好的MIT Kerberos GUI客户端上加载或创建一个票据。 如admin/admin@BIGDATA 7.在Firefox浏览器访问HDFS。
蜗牛骑象 发布于 1天前 阅读 2

hive 插入中文乱码

插入数据时,要将中文数据转码为 iso8859-1 new String("测试数据".getBytes(),"iso8859-1"); 如果是shell 将shell 工具转为iso 编码格式
蜗牛骑象 发布于 1天前

Hive格式各种格式下不同压缩算法的比较

Hive格式各种格式下不同压缩算法的比较
蜗牛骑象 发布于 1天前

Hbase集群间数据迁移方法总结

今天花了一天的时间查资料做测试,略微的总结了一下hbase数据迁移的方法。 一、需要在hbase集群停掉的情况下迁移  步骤:(1)执行hadoop distcp -f filelist "hdfs://new cluster ip:9000/hbasetest" (2)在new cluster执行./hbase org.jruby.Main add_table.rb /hbase/table20111222,将拷贝来的表加入到.MEAT.中(会出现region的数目不一致的问题,这个需要重启hase才能解决) 说明:(1)filelist为hdfs上的列表文件,内容如下: /hbase/table20111222 /hbase/table20120131 (2)如果两个集群的hadoop版本不一致,需要在new cluster上执行hadoop distcp,否则会出现读写异常; 二、在集群运行的时候进行数据迁移  1、Replication:这个是动态的备份(可以理解为实时备份) 步骤:(1)在old cluster将需要迁移的表属性进行修改: disable 'your_table' alter 'your_table', {NAME => 'family_name', REPLICATION_SCOPE => '1'} enable 'your_table' (2)打开new cluster集群的replication,修改hbase-site.xml <property> <name>hbase.replicati...
蜗牛骑象 发布于 1天前

ambari 干掉一个namenode 从新安装最快的方式

具体实施步骤: 1.干掉之前,将namenode迁移走,不迁移也可以(ps:安装之后需要拷贝namenode的目录) 2.ZooKeeper Server在别的节点创建一个 3.JournalNode ambari 没法创建,只能这样,等待安装完成之后将别的节点的JournalNode 文件夹拷贝过来,然后执行chown -R hdfs:hadoop(ps:如果JournalNode 放在一个单独的盘上,无需操作) 4.干掉的那个机器比如机器名称叫vm2.bigdata 将这个机器上的内容按照1到3步进行操作,操作完成之后,备份 vm2.bigdata机器的/etc/fstab。如果有数据库也要备份。 然后可以直接将这个机器的操作系统干掉。 注意:干掉的是操作系统,不是全部的挂载磁盘,挂载的数据磁盘,不要干掉,否则数据就没了。 5.从新安装vm2.bigdata系统,并且起名字为vm6.bigdata,注意一定不能重名,重名ambari 安装不上,ip地址保持不变,注意集群的hosts配置文件也要修改 6.从ambair 添加主机 将vm6.bigdata填写上,注意下一步选择安装组件的时候,只安装客户端,这一步至关重要。 7.安装好客户端之后,将vm6.bigdata从新命名为vm2.bigdata,记得集群的hosts 文件也要修改。重启这个机器 8.重启之后,从ambari里将vm6,bigdata删除掉 这条记录是多余的,没有用,删除...
蜗牛骑象 发布于 1天前

在CentOS6.9中搭建 Zookeeper

在CentOS6.9中搭建 Zookeeper
自东土大唐而来 发布于 1天前 阅读 3

Spark入门基础(1)——RDD

RDD(Resilient Distributed Datasets),弹性分布式数据集, 是分布式内存的一个抽象概念,RDD提供了一种高度受限的共享内存模型,即RDD是只读的记录分区的集合,只能通过在其他RDD执行确定的转换操作(如map、join和group by)而创建,然而这些限制使得实现容错的开销很低。
行走de熊猫 发布于 1天前

求一个整形数组中一个index,index左边的和 等于index 右边的和

/**求一个整形数组中一个index,index左边的和 等于index 右边的和**/ ``` public int pivotIndex(int[] nums) { long sum=0; for(int s:nums){ sum +=s;} long crunSum=0; for(int i =0; i
昏鸦 发布于 1天前 阅读 5

hive写入数据的四种方式

Hive的几种常见的数据导入方式,总结为四种: (1)、从本地文件系统中导入数据到Hive表; (2)、从HDFS上导入数据到Hive表; (3)、从别的表中查询出相应的数据并导入到Hive表中; (4)、在创建表的时候通过从别的表中查询出相应的记录并插入到所创建的表中。 一、从本地文件系统中导入数据到Hive表   先在Hive里面创建好表,如下: hive> create table wyp > (id int, name string, > age int, tel string) > ROW FORMAT DELIMITED > FIELDS TERMINATED BY '\t' > STORED AS TEXTFILE; OK Time taken: 2.832 seconds 注意:只有textfile格式支持文件直接load。 本地文件系统里面有个/home/wyp/wyp.txt文件,内容如下: [wyp@master ~]$ cat wyp.txt 1 wyp 25 13188888888888 2 test 30 13888888888888 3 zs 34 899314121 wyp.txt文件中的数据列之间是使用\t分割的,可以通过下面的语句将这个文件里面的数据导入到wyp表里面,操作如下: hive> load data local inpath 'wyp.txt' into table wyp; Copying data from file:/home/wyp/wyp.txt Copying file: file:/home/wyp/wyp.txt Loading data to...
张欢19933 发布于 1天前 阅读 2

各种编程语言从数据库中获得数据方式小结

从数据库中获取数据虽然本质仍然是应用程序执行一句SQL语句,然而与插入、删除、修改等操作不同,查询语句需要将查询表结果返回给程序。本文通过执行一个较为复杂的SQL查询并返回结果,总结了各种编程语言连接数据库返回相应查询结果的例子。
SamYjy 发布于 2天前 阅读 39

深度思考Spark Runtime机制

序言 在以往的博客一天一个函数系列中,我们集中精力攻克了一座又一座的spark中那些晦涩的语法,收获了不少知识。如果以战喻,那就是我们的游击战取得了局部的显著效果。但是要想撼动整个spark-streaming大厦,还需要对整个运行时的机制有一个深入性的了解,知道所谓的接口应用,调用都是一些工程性封装好的东西,这些只要经过熟练的训练即可,但是想要更好的运用,就必须从底层了解它的机制。 在深入理解运行时机制之前,我建议大家思考一下这个问题,为什么spark采用的计算模型是以宽依赖为分界线的DAG模式?在我看来有以下几个优势在里面,第一点是按照不同的stage划分,使得计算更加高效,窄依赖诸如x平方,可以直接以pipe的形式进行操作,而宽依赖诸如(x+y)的平方,它需要等父依赖就绪后才能计算,所以这样的划分能够使计算速率最大化。第二点是,由于分布式集群的不可控性,我们的数据可能要随时落盘,这样一来由于我们采用的是stage模式的处理,我们就可以将中间结果保存在磁盘上,而不会发生由于宕机使得数据全部丢失的情况。 基于以上概念,我们来谈谈一些专业术语以及spark运行时的架构。 Terminologies SparkContext SparkContext是整个Spark Application的核...
牧师-Panda 发布于 2个月前 阅读 839 评论 2 点赞 2

你想了解的Hive Query生命周期--钩子函数篇!

一个Hive SQL语句的执行需要经历哪些阶段? 在这些阶段中,我们可以做哪些事来影响它? Hive为我们提供了很多的钩子函数,我们可以怎样利用它为Hive实现扩展?
问津已非少年 发布于 3个月前 阅读 790 评论 2 点赞 2

【干货】Apache Hive 2.1.1 安装配置超详细过程,配置hive、beeline、hwi、HCatalog、WebHCat等组件

    在Docker环境成功搭建了Apache Hadoop 2.8 分布式集群,并实现了NameNode HA、ResourceManager HA之后(详见我的另一篇博文:Apache Hadoop 2.8分布式集群详细搭建过程),接下来将搭建最新稳定版的Apache Hive 2.1.1,方便日常在自己电脑上测试hive配置和作业,同样的配置也可以应用于服务器上。以下是Apache Hive 2.1.1的安装配置详细过程 1、阅读Apache Hive官网说明文档,下载最新版本Hive        Hive是一个基于Hadoop的数据仓库工具,将HDFS中的结构化数据映射为数据表,并实现将类SQL脚本转换为MapReduce作业,从而实现用户只需像传统关系型数据库提供SQL语句,并能实现对Hadoop数据的分析和处理,门槛低,非常适合传统的基于关系型数据库的数据分析向基于Hadoop的分析进行转变。因此,Hive是Hadoop生态圈非常重要的一个工具。        安装配置Apache Hive,最直接的方式,便是阅读 Apache Hive官网的说明文档,能了解到很多有用的信息。Apache Hive 要求JDK 1.7及以上,Hadoop 2.x(从Hive 2.0.0开始便不再支持Hadoop 1.x),Hive 可部署于Linux、Mac、Windows环境。        从官网下载最新稳定版本的 Apache Hive 2.1.1 2、安装配置Apache Hi...
雪饼 发布于 5个月前 阅读 2114 评论 2 点赞 2

【干货】Apache Hadoop 2.8 完全分布式集群搭建超详细过程,实现NameNode HA、ResourceManager HA高可靠性

最近在自己的笔记本电脑上搭建了Apache Hadoop分布式集群,采用了最新的稳定版本2.8,并配置了NameNode、ResourceManager的HA高可用,方便日常对Hadoop的研究与测试工作。详细的搭建过程如下: 1、安装docker,创建docker容器,用于搭建hadoop节点 docker真是个好东西啊,当要在自己的笔记本上搭建分布式集群时,由于CPU、内存、磁盘有限,无法在VMware上虚拟出太多节点,这时使用docker创建几个容器,就能轻松搭建一个分布式集群了。 (1)先在VMware上安装centos6.9,作为宿主机,然后安装docker,具体过程见我另一篇博文:Centos6.9安装docker (2)然后再docker hub中拉取centos镜像,用于创建分布式集群的节点,推荐在docker中安装centos6(docker中的centos7有坑,被坑过,呜呜),具体过程见我另一篇博文:docker中安装centos6 (3)centos镜像准备好后,就开始创建docker容器,用于搭建hadoop的节点 # 创建4个节点,用于搭建hadoop docker run -it --name hadoopcentos1 centos:6 /bin/bash docker run -it --name hadoopcentos2 centos:6 /bin/bash docker run -it --name hadoopcentos3 centos:6 /bin/bash docker run -it --name hadoopcentos4 centos:6 /bin/b...
雪饼 发布于 5个月前 阅读 4221 评论 21 点赞 6

Nginx+Keepalived(双机热备)搭建高可用负载均衡环境(HA)

Nginx+Keepalived搭建高可用负载均衡环境(HA) http://blog.csdn.net/xyang81/article/details/52554398可以看更多介绍 Keepalived的介绍可以百度一堆一堆的资料。一定要看看哦。 1.基于上一篇博客总结,再次安装一个虚拟机当backup服务器,这个服务器只安装Keepalived+Nginx即可 2.Master还是上一篇博文的虚拟机,环境是Tomcat+JDK+Nginx+Keepalived 3.每个Nginx服务器都安装Keepalived
小帅帅丶 发布于 6个月前 阅读 6071 评论 5 点赞 6

Elasticsearch 与 Thinkphp 增删改查操作

    Elasticsearch 建模  mappings有点类似我们定义MySQL的数据库表结构的时候,需要指定每个字段的名字,其数据类型一样。当然,这个定义过程,也指明了这个表结构一共含有多少个字段了。对于ES而言,就相当于指定了一个document有多少field,每个field的数据类型,注意,这个比MySQL定义表过程,还多了一个有用的操作,就是指定每个字段可用的分析器(analyzer). 当然,不指定的话,就是采用默认的standard analyzer,当然你也可以指定某个字段不需要分析器(not_analyzed).   ES支持的数据类型: 简单数据类型: string, date, long, double,integer,boolean 以及ip等等 层级结构类型:JSON型的object,嵌套类型 (都是JSON) 特殊结构类型:geo_point, geo_shape以及completion。 这些数据类型,可以在创建索引的时候,指定   下面,再来说说分析器analyzer。 ES系统默认提供了很多的分析器,最著名的是standard analyzer。另外,还有下面的一些分析器,这些分析器,可以进入官网进行深入研究。 Simple Analyzer Whitespace Analyzer Stop Analyzer Keyword Analyzer Pattern Analyzer Language Analyzers Fingerprint Analyzer 这些分析器中,重点在于如何...
VHUOI 发布于 6个月前 阅读 1247 评论 2 点赞 1 打赏 2

Spark Streaming场景应用-Kafka数据读取方式

## 概述 Spark Streaming 支持多种实时输入源数据的读取,其中包括Kafka、flume、socket流等等。除了Kafka以外的实时输入源,由于我们的业务场景没有涉及,在此将不会讨论。本篇文章主要着眼于我们目前的业务场景,只关注Spark Streaming读取Kafka数据的方式。 Spark Streaming 官方提供了两种方式读取Kafka数据: - 一是Receiver-based Approach。该种读取模式官方最先支持,并在Spark 1.2提供了数据零丢失(zero-data loss)的支持; - 一是Direct Approach (No Receivers)。该种读取方式在Spark 1.3引入。 此两种读取方式存在很大的不同,当然也各有优劣。接下来就让我们具体剖解这两种数据读取方式。 ## 一、Receiver-based Approach 如前文所述,Spark官方最先提供了基于Receiver的Kafka数据消费模式。但会存在程序失败丢失数据的可能,后在Spark 1.2时引入一个配置参数`spark.streaming.receiver.writeAheadLog.enable`以规避此风险。以下是官方的原话: > under default configuration, this approach can lose data under failures (see receiver reliability. To ensure zero-data loss, you have to additionally enable Write Ahead Logs in Spark Streaming (in...
狂奔小蜗牛 发布于 6个月前 阅读 3219 评论 3 点赞 3 打赏 2

CentOS7搭建 Hadoop + HBase + Zookeeper集群

本文主要介绍搭建Hadoop、HBase、Zookeeper集群环境的搭建
kolbe 发布于 6个月前 阅读 5735 评论 15 点赞 20 打赏 1

在Ignite上运行微服务:第三部分

本文是系列文章的最后一篇,这个系列会详细描述如何使用像Ignite这样的内存数据网格(IMDG)技术来构建容错和可扩展的微服务解决方案。
李玉珏 发布于 7个月前 阅读 1619 评论 2 点赞 4 打赏 1

开源中国用户分析

加入开源中国也有超过三年的时间了,觉得开源中国已经越办越好了,突然很想知道它究竟有多好,我是不是开源中国最老的用户,我有176个开源中国的积分能够排名第几,带着这些问题,我抓取了部分开源中国的用户信息,做了一个简单的分析。 数据获取 要获得用户数据,可以通过开源中国的网页来进行。这个是我的主页面 这个页面包含了用户的基本信息,包括用户名,积分,粉丝,关注等等。 点击粉丝链接可以获得所有的粉丝的情况 然后我们就可以通过这些链接,迭代的找到所有相关连的数据了。 工具选取 这次的数据抓取我选用了requests和pyquery requests是一个非常好用的python的http/rest的客户端,比之python自带的urllib要好用很多,推荐使用。 pyquery是用来解析和操纵html和DOM文档,提供类似jquery的语法,比诸如beatifulSoap要好用不少,尤其如果你是一个前段开发者,熟悉jquery,那就更方便了。大家可以参考我的另一篇博客了解更多的背景信息。 爬取网页数据 为了抓取网页的内容,我们可用chrome自带的工具来查看网页的DOM结构: 核心的代码如下: def get_user_info(url): try: r = requests.get(url + "/fans", headers=headers) doc = pq(r.t...
naughty 发布于 7个月前 阅读 3829 评论 53 点赞 18

Spark 1.6.1分布式集群环境搭建

本文展示了在之前搭建的Hadoop分布式集群的基础上如何搭建Spark分布式集群环境。
JackieYeah 发布于 2年前 阅读 7585 评论 6 点赞 9
顶部