Sunday, September 28, 2014

[repost ]Open Sourcing ml-ease

original:http://ift.tt/1vil3wE LinkedIn data science and engineering is happy to release the first version of ml-ease, an open-source large scale machine learning library. ml-ease supports model fitting/training on a single machine, aHadoop cluster and a Spark cluster with emphasis on scalability, speed, and ease-of-use. ml-ease is a useful tool for developers working on big data machine […]



via WordPress http://ift.tt/1sGaSUT

Labels:

[project ]ml-ease:ADMM based large scale logistic regression

original:http://ift.tt/1mYY0kZ ml-ease Table of Contents What is ml-ease? Copyright Open Source Software included in ml-ease What is ADMM? Quick Start Code structure Input Data Format Output Models Detailed Instructions Supporting Team What is ml-ease? ml-ease is the Open-sourced Large-scale machine learning library from LinkedIn; currently it has ADMM based large scale logistic regression. Copyright Copyright […]



via WordPress http://ift.tt/YvB9HN

Labels:

Tuesday, September 23, 2014

[repost ]Databricks连城谈Spark的现状

original:http://ift.tt/1CaRQqK 连城是一名曾工作于网易杭州研究院和百度的自由开发者,也是《Erlang/OTP并发编程实战》及《Erlang并发编程(第一部分)》的译者。近日,InfoQ中文站编辑跟连城进行了邮件沟通,连城在邮件中分享了自己对Spark现状的解读。 InfoQ:有专家侧重Storm,您则是侧重Spark,请简单谈谈这两者的区别和联系? 连城:Storm是一个流处理系统,而Spark的适用范围则宽泛得多,直接涵盖批处理、流处理、SQL关系查询、图计算、即席查询,以及以机器学习为代表的迭代型计算等多种范式。所以我想这个问题的初衷可能是想问Storm和Spark的流处理组件Spark Streaming之间的区别和联系? Spark Streaming相对于传统流处理系统的主要优势在于吞吐和容错。在吞吐方面,包括Storm在内的大部分分布式流处理框架都以单条记录为粒度来进行处理和容错,单条记录的处理代价较高,而Spark Streaming的基本思想是将数据流切成等时间间隔的小批量任务,吞吐量显著高于Storm。在容错方面,Storm等系统由于以单条记录为粒度进行容错,机制本身更加复杂,错误恢复时间较长,且难以并行恢复;Spark Streaming借助RDD形成的lineage DAG可以在无须replication的情况下通过并行恢复有效提升故障恢复速度,且可以较好地处理straggler。 除此之外,由于Spark整体建立在RDD这一统一的数据共享抽象结构之上,开发者不仅可以在单套框架上实现多种范式,而且可以在单个应用中混用多种范式。在Spark中,可以轻松融合批量计算和流计算,还可以在交互式环境下实现流数据的即席查询。Storm相对于Spark Streaming最主要的优势在于处理延迟,但百毫秒至秒级延迟已经可以覆盖相当多的用例。更详细的分析比较可以参考Matei Zaharia博士的论文An Architecture for Fast and General Data Processing on Large Clusters的第四章。 InfoQ:2014年初您加入Databricks这个数据初创公司,当时是怎样一个契机触动了您? 连城:我于2013年六月第一次接触Spark。此前函数式语言和分布式系统一直是我最为感兴趣的两个技术方向,而Spark刚好是这二者的一个很好的融合,这可以算是最初的契机。而深入接触之后,我发现Spark可以在大幅加速现有大数据分析任务的同时大幅降低开发成本,从而使得很多原先不可能的工作成为可能,很多困难的问题也得到了简化。Spark的社区活跃度也进一步增强了我对Spark的信心。有鉴于此,去年十月份刚得知Databricks成立时便有心一试,并最终得偿所愿 InfoQ:您之前翻译的图书都是跟并发和分布式相关,请您介绍一下Spark在并发和分布式上的设计? 连城:分布式系统设计的一大难点就是分布式一致性问题。一旦涉及可变状态的分布式同步,系统的复杂性往往会陡然上升。而Spark则较好地规避了这个问题。个人认为原因主要有二: Spark是一个大数据分析框架,其本身并不包含任何(持久)存储引擎实现,而是兼容并包现有的各种存储引擎和存储格式,所以规避了分布式存储系统中的分布式数据一致性问题。 虽然函数式语言还远未成为主流,但在大数据领域,以不可变性(immutability)为主要特征之一的函数式编程却已经深入骨髓。扎根于函数式编程的MapReduce固然是一大原因,但我猜想另一方面可能是因为在大数据场景下,单一节点出错概率较高,容错代价偏大,因此早期工程实践中一般不会在计算任务中就地修改输入数据,而是以新增和/或追加文件内容的方式记录中间结果和最终结果,以此简化容错和计算任务的重试。这种对不可变性的强调,大大削减了大数据分析场景下的数据一致性问题的难度。上层框架也因此得以将注意力集中在容错、调度等更为高层的抽象上。在并发方面,和Hadoop的进程级并行不同,Spark采用的是线程级并行,从而大大降低了任务的调度延迟。借助于Akka的actor model,Spark的控制位面还是数据位面并发通讯逻辑也相对精简(Akka本身也的确是跟Erlang一脉相承)。 InfoQ:Spark社区现在是空前火爆,您觉得其流行的主要原因是什么? 连城:可能是大家受Hadoop压迫太久了吧,哈哈,开玩笑的 我觉得原因有几点: Spark在大大提升大数据分析效率的同时也大大降低了开发成本,切实解决了大数据分析中的痛点 通过RDD这一抽象解决了大数据分析中的数据共享这一重要问题,从而使得开发者得以在单一应用栈上混合使用多种计算范式打造一体化大数据分析流水线,这大大简化了应用的开发成本和部署成本。 简洁明了的接口。我曾经碰到这么一个真实案例,一位Spark contributor用Spark来做数据分析,但他的数据量其实很小,单机完全可以处理,他用Spark的主要理由就是接口简洁明了,写起来代码来“幸福指数”高 当然另一个重要理由是今后数据量大起来之后可以很方便地scale out。 对兼容性的极致追求。面对资产丰富的Hadoop生态,Spark的选择是全面兼容,互惠共赢。用户无须经历痛苦的ETL过程即可直接部署Spark。这也是Cloudera、MapR、Pivotal、Hortonworks等Hadoop大厂商全面拥抱Spark的重要原因之一。 InfoQ:Spark目前好像还没有完全大规模应用,您觉得开发者主要的顾虑在什么地方? 连城:由于大数据本身的重量,大数据分析是一个惯性很大的技术方向,相关新技术的推广所需要的时间也更加长久。我个人接触到的案例来看,Spark用户的主要顾虑包括两点: Scala相对小众,认为相关人才培养和招聘上会比较吃力。这个问题我认为正在缓解,而且有加速的趋势。 对数百、上千节点的大规模集群的稳定性的顾虑。实际上一千节点以上Spark集群的用例已经出现多个,其中eBay的Spark集群节点数已超过两千。 InfoQ:您最希望Spark下一版本能解决的技术难题是什么? 连城:我近期的工作主要集中于Spark SQL,在1.2的roadmap中最为期待的还是正在设计当中的外部数据源API。有了这套API,用户将可以在Spark SQL中采用统一的方式注册和查询来自多种外部数据源的数据。Cassandra、HBase等系统的深度集成将更加统一和高效。 InfoQ:在部署Spark集群、设计Spark应用时有哪些方面的问题需要考量? 连城: 集群部署方式,standalone、Mesos和YARN各有千秋,需要按需选用。 在单集群规模上,也可以按需调整。Yahoo和腾讯采用的是多个小规模卫星集群的部署模式,每个集群都有专用的目的,这种模式故障隔离更好,可以保证更好的QoS。同时业内也不乏eBay这样的单体大集群案例,其主要点在于更高的集群资源利用率以及对大规模计算的应对能力 与现存数据分析系统的对接。对于常见系统如Kafka、Flume、Hive、支持JDBC的传统数据库,可以利用Spark提供的现成接口;对于Spark项目本身尚未涵盖的,或是私有系统的对接,可以考虑开发自定义数据源RDD。在1.2版本以后,也可以考虑通过Spark SQL的外部数据源API来对接现有结构化、半结构化数据 合理挑选、组织需要cache的数据,最大限度地发挥Spark内存计算的优势 […]



via WordPress http://ift.tt/ZGuMSP

Labels:

[repost ]统计学习那些事

original:http://ift.tt/1jqkj07 编辑部按:本文转载Yang Can主页中的文章,稍有修改,原文链接请点击此处。 作者简介:杨灿,香港科技大学电子与计算机工程系。 主页:http://ift.tt/XUPHzP 在港科大拿到PhD,做的是Bioinformatics方面的东西。Bioinformatics这个领域很乱,从业者水平参差不齐,但随着相关技术(比如Microarray, Genotyping)的进步,这个领域一直风风光光。因为我本科是学计算机电子技术方面的,对这些技术本身并没有多大的兴趣,支持我一路走过来的一个重要原因是我感受到统计学习(Statistical learning)的魅力。正如本科时代看过的一本网络小说《悟空传》所写的:“你不觉得天边的晚霞很美吗?只有看着她,我才能坚持向西走。” 离校前闲来无事,觉得应该把自己的一些感受写下来,和更多的爱好者分享。 1. 学习经历 先介绍一下我是如何发现这个领域的。我本科学自动化,大四时接触到一点智能控制的东西,比如模糊系统,神经网络。研究生阶段除了做点小硬件和小软件,主要的时间花在研究模糊系统上。一个偶然的机会,发现了王立新老师的《模糊系统与模糊控制教材》。我至今依然认为这是有关模糊系统的最好的书,逻辑性非常强。它解答了我当年的很多困惑,然而真正令我心潮澎湃的是这本书的序言,读起来有一种“飞”的感觉。后来我终于有机会来到港科大,成为立新老师的PhD学生,时长一年半(因为立新老师离开港科大投身产业界了)。立新老师对我的指导很少,总结起来可能就一句话:“你应该去看一下Breiman 和Friedman的文章。”立新老师在我心目中的位置是高高在上的,于是我就忠实地执行了他的话。那一年半的时间里,我几乎把他们的文章看了好几遍。开始不怎么懂,后来才慢慢懂了,甚至有些痴迷。于是,我把与他们经常合作的一些学者的大部分文章也拿来看了,当时很傻很天真,就是瞎看,后来才知道他们的鼎鼎大名,Hastie, Tibshirani, Efron等。文章看得差不多了,就反复看他们的那本书“The Elements of Statistical learning”(以下简称ESL)。说实话,不容易看明白,也没有人指导,我只好把文章和书一起反复看,就这样来来回回折腾。比如为看懂Efron的“Least angle regression”,我一个人前前后后折腾了一年时间(个人资质太差)。当时国内还有人翻译了这本书(2006年),把名字翻译为“统计学习基础”。我的神啦,这也叫“基础”!还要不要人学啊!难道绝世武功真的要练三五十年?其实正确的翻译应该叫“精要”。在我看来,这本书所记载的是绝世武功的要义,强调的是整体的理解,联系和把握,绝世武功的细节在他们的文章里。 2. 关于Lasso与Boosting 由于篇幅有限,我就以Lasso和Boosting为主线讲讲自己的体会。故事还得从90年代说起。我觉得90年代是这个领域发展的一个黄金年代,因为两种绝世武功都在这个时候横空出世,他们是SVM和Boosted Trees。 先说SVM。大家对SVM的基本原理普遍表述为,SVM通过非线性变换把原空间映射到高维空间,然后在这个高维空间构造线性分类器,因为在高维空间数据点更容易分开。甚至有部分学者认为SVM可以克服维数灾难(curse of dimensionality)。如果这样理解SVM的基本原理,我觉得还没有看到问题的本质。因为这个看法不能解释下面的事实:SVM在高维空间里构建分类器后,为什么这个分类器不会对原空间的数据集Overfitting呢?要理解SVM的成功,我觉得可以考虑以下几个方面:第一,SVM求解最优分类器的时候,使用了L2-norm regularization,这个是控制Overfitting的关键。第二,SVM不需要显式地构建非线性映射,而是通过Kernel trick完成,这样大大提高运算效率。第三,SVM的优化问题属于一个二次规划(Quadratic programming),优化专家们为SVM这个特殊的优化问题设计了很多巧妙的解法,比如SMO(Sequential minimal optimization)解法。第四,Vapnika的统计学习理论为SVM提供了很好的理论背景(这点不能用来解释为什么SVM这么popular,因为由理论导出的bound太loose)。于是SVM成功了,火得一塌糊涂! 再说Boosted Trees。它基本的想法是通过对弱分类器的组合来构造一个强分类器。所谓“弱”就是比随机猜要好一点点;“强”就是强啦。这个想法可以追溯到由Leslie Valiant教授(2010年图灵奖得主)在80年代提出的probably approximately correct learning (PAC learning) 理论。不过很长一段时间都没有一个切实可行的办法来实现这个理想。细节决定成败,再好的理论也需要有效的算法来执行。终于功夫不负有心人, Schapire在1996年提出一个有效的算法真正实现了这个夙愿,它的名字叫AdaBoost。AdaBoost把多个不同的决策树用一种非随机的方式组合起来,表现出惊人的性能!第一,把决策树的准确率大大提高,可以与SVM媲美。第二,速度快,且基本不用调参数。第三,几乎不Overfitting。我估计当时Breiman和Friedman肯定高兴坏了,因为眼看着他们提出的CART正在被SVM比下去的时候,AdaBoost让决策树起死回生!Breiman情不自禁地在他的论文里赞扬AdaBoost是最好的现货方法(off-the-shelf,即“拿下了就可以用”的意思)。其实在90年代末的时候,大家对AdaBoost为什么有如此神奇的性能迷惑不解。1999年,Friedman的一篇技术报告“Additive logistic regression: a statistical view of boosting”解释了大部分的疑惑(没有解释AdaBoost为什么不容易Overfitting,这个问题好像至今还没有定论),即搞清楚了AdaBoost在优化什么指标以及如何优化的。基于此,Friedman提出了他的GBM(Gradient Boosting Machine,也叫MART或者TreeNet)。几乎在同时,Breiman另辟蹊径,结合他的Bagging (Bootstrap aggregating) 提出了Random […]



via WordPress http://ift.tt/1mJNJOT

Labels:

Monday, September 22, 2014

[repost ]Using Indri Java API (OS X)

original:http://ift.tt/1uxBFyY The Java API of Indri was not well-documented. I spent quite sometime in searching and trying to get it working, especially for OS X system. So, lets start: You need to have an Indri compiled with Java support. (I will write another post on this –> also painful…) Then you will find a file […]



via WordPress http://ift.tt/1uxBHXJ

Labels:

[repost ]Relationships among probability distributions

original:http://ift.tt/1vfmHkY In probability theory and statistics, there are several relationships among probability distributions. These relations can be categorized in the following groups: One distribution is a special case of another with a broader parameter space Transforms (function of a random variable); Combinations (function of several variables); Approximation (limit) relationships; Compound relationships (useful for Bayesian inference); […]



via WordPress http://ift.tt/1tV1Ly6

Labels:

[repost ]Indri Repository Builder

original:http://ift.tt/ZBZsEK This application builds an Indri Repository for a collection of documents. Parameter formats for all Indri applications are also described in IndriParameters.html Repository construction parameters memory an integer value specifying the number of bytes to use for the indexing process. The value can include a scaling factor by adding a suffix. Valid values are […]



via WordPress http://ift.tt/1wFHcVT

Labels:

Sunday, September 21, 2014

[repost ]Indri Parameter Files

original:http://ift.tt/1qYWuWj The indri applications, IndriBuildIndex, IndriDaemon, and IndriRunQuery accept parameters from either the command line or from a file. The parameter file uses an XML format. The command line uses dotted path notation. The top level element in the parameters file is named parameters. Repository construction parameters memory an integer value specifying the number of […]



via WordPress http://ift.tt/1uvpaEb

Labels:

[repost ]Indri Repository Structure

original:http://ift.tt/18SUzrE Overview An Indri Repository is a collection of a set of files with a specified format that contains all the relevant information regarding a collection. The collection contains information about the indexed documents, any fields or metadata, the inverted indexes for the collection and other necessary items. It is important to note that when […]



via WordPress http://ift.tt/XJlsvO

Labels:

[repost ]Indri Document Scoring

original:http://ift.tt/17NZsie Indri uses the language modeling approach to information retrieval. Language modeling assigns a probability value to each document, meaning that every score is a value between 0 and 1. For computational accuracy reasons, Indri returns the log of the actual probability value. log(0) equals negative infinity, and log(1) equals zero, so Indri document scores […]



via WordPress http://ift.tt/1qYzkPM

Labels:

[repost ]CDI(JSR 299)介绍——JavaEE平台的上下文与依赖注入

original:http://ift.tt/1eXA6k1 CDI中最令人兴奋的功能是允许每个人在Java EE平台中编写强大的扩展性功能,甚至于改变其核心本身。这些扩展性功能是可以完全移植到任何支持CDI的环境中。本文是对CDI提供的主要功能进行一个概述,并通过一个Web应用示例来介绍框架的运行机制。 目前有三种实现CDI的方式: JBoss Weld(参考实现)、 Caucho CanDI和Apache OpenWebBeans。已经有几个框架提供了CDI的扩展性功能,如:Apache DeltaSpike、 JBoss Seam 3、和 Apache MyFaces CODI。 一些历史 CDI规范的产生是为了填充后端的EJB和前端视图层的JSF之间的间隙,第一个初稿版本只是针对J2EE,但是在创立规范的过程中很明显的发现大多数的功能是适用于任何Java环境的,包括J2SE。 同时,无论是Guice还是Spring的社区都已经开始努力将 “JSR-330:Java依赖注入作为基本的” (代号 AtInject )作为基本的注入方式。考虑到没有任何新的依赖注入容器实现了实际的注入API,AtInject”和CDI专家组密切合作以确保在依赖注入框架中提出一个通用的解决方案。因此CDI使用了AtInject的注解规范,这就表明每一个CDI的实现都完全符合AtInject的规范,比如Guice和Spring。最终CDI和AtInject都被包含在了J2EE(JSR-316)和几乎所有的J2EE服务器中。 CDI 主要特性 在看示例代码之前,让我们来快速的浏览一遍CDI的一些主要特性 类型安全:CDI根据Java类型来注入对象,用以代替之前的根据名称来注入对象。当类型不能充分唯一判断出注入对象时,我们可以使用@Qualifier注解来指定注入。这可以让编译器更容易发现错误,并提供更便捷的重构。 POJO:几乎每一个Java对象都可以使用CDI来注入!包括EJB和JNDI的资源、持久化对象和已经实现过的工厂方法的任何对象。 可扩展性:每一个CDI容器,我们都能很方便的对其增加扩展性功能,增加的扩展性功能可以运行在每一个CDI容器和无论哪个厂商的J2EE 6 服务器中,这一特性通过精心设计的SPI(服务供应接口)得以实现,并成为JSR-299规范的一部分。 拦截器:它可以很容易的实现你自己的拦截器。因为JSR-299提供了很便捷的方式,他们现在也可以运行在每一个CDI容器和 J2EE 6 服务器中。这是通过指定一个实现了一部分JSR-299的SPI(服务提供接口)来实现的。 可修饰性:它允许动态的扩展已存在的接口实现和代码切面。 事件:CDI指定了一个低耦合的类型安全机制来发送和接受事件。 集成EL表达式:EL 2.2 具有很强的功能和高度的灵活性,CDI提供了对它的插件式支持。 CDI代码示例 让我们一起来看看一个简单的web程序,这个程序可以让你使用一个Web表单发送邮件–特别简单。我们只提供了代码片段,但是应该足够展示CDI的使用重点了。 对于我们的发邮件的程序,我们需要一个具有“application-scoped”标示的MailService对象,这个对象应该是单例模式的(为了保证容器每次获取和注入进来的都是同一个对象)。replyTo的值由 同样具有“application-scoped”标示的ConfigurationService提供。接下来我们可以看到第一次注入, configuration 字段是不能由程序代码设置的,而是由CDI注入的。@Inject注解表示CDI会负责对它的注入。 代码1 1 2 3 4 5 6 7 8 […]



via WordPress http://ift.tt/1DqKcds

Labels:

[repost ]DeltaSpike Configuration Mechanism

original:http://ift.tt/Z5kn2Z Configuration Basics Benefits for Production Drop-In Configuration CDI-Extension Configuration Userland Configuration ConfigResolver getPropertyValue() getProjectStageAwarePropertyValue() getPropertyAwarePropertyValue() handling of default values ConfigSource ConfigSources provided by default Reordering of the default order of Config-Sources Custom Config-Sources PropertyFileConfig Type-safe configuration Configuration Basics The goal of the DeltaSpike configuration mechanism is to make it obsolete to touch released binaries […]



via WordPress http://ift.tt/1C0vdoK

Labels:

[repost ]OpenWebBeans and JavaSE

original:http://ift.tt/Z5kls1 To add OpenWebBeans to your javaSE project you need to take the following steps: Add required jars to your project Bootstrap OpenWebBeans Done! Congratulations. Adding required jars to your project You can add OpenWebBeans to your project manually by adding jars or with Apache Maven. How to download is explained here: download page. For […]



via WordPress http://ift.tt/1DqKalC

Labels:

[repost ]Tutorial – Introduction to CDI – Contexts and Dependency Injection for Java EE (JSR 299)

original:http://ift.tt/K14Fge One of the most exciting features of CDI is to allow anyone to write powerful extensions to the core Java EE platform, even change core behaviour itself. These extensions are fully portable across any environment which supports CDI. This article provides an overview of the major CDI features, explores a sample web application, and […]



via WordPress http://ift.tt/XGkznR

Labels:

[repost ]Configuring Apache Deltaspike through environment variables

original:http://ift.tt/XGkBMk One of the tenants of the 12Factor application methodology and something I liked about Ruby on Rails projects was the way an application could be configured using environment variables. In particular, applications would have a per-environment configuration (development, test, production, etc). In the development configuration, you could tailor the application to focus on a […]



via WordPress http://ift.tt/Z5afaw

Labels:

[repost ]Control CDI Containers in SE and EE

original:http://ift.tt/GKVNWk The Problem Have you ever tried to boot a CDI container like JBoss Weld or Apache OpenWebBeans in Java SE? While doing this task you will end up knee deep in the implementation code of the container you are using! Not only is this a complicated task to do, but your code will also […]



via WordPress http://ift.tt/1sQrsLW

Labels:

[repost ]A Proposal for Java EE Configuration

original:http://ift.tt/1jyaixp Requirements for Java EE Configuration In this post I want to outline, what I see a reasonable scope for a Java EE Configuration JSR. I would first try to summarize different use cases, people want to have to be covered. In a next part I try to deduce corresponding requirements. Finally I will try […]



via WordPress http://ift.tt/1uPsNXF

Labels:

[repost ]Java EE CDI Extension example

original:http://ift.tt/Z55hKX In this article we will see how to implement a Java EE CDI portable extension from scratch. CDI extensions are used mainly by framework developers (ex: Apache DeltaSpike project, the former MyFaces CODI). Introduction Java EE CDI portable extensions is an API that provides the means for an application to listen for specific CDI […]



via WordPress http://ift.tt/1seSm5R

Labels:

Saturday, September 20, 2014

[repost ]Indri Retrieval Model Introduction

original:http://ift.tt/17iuwtR This document is meant to give a broad, yet detailed, overview of the retrieval model that Indri implements. The model is based on a combination of the language modeling (PonteCroft1998) and inference network (TurtleCroft1991) retrieval frameworks. Both frameworks, on their own, have been widely studied, applied, and found to be very effective for a […]



via WordPress http://ift.tt/Z1Qi4n

Labels:

[repost ]The Krovetz Stemmer

original:http://ift.tt/XAxEyU The Krovetz Stemmer was developed by Bob Krovetz, at the University of Massachusetts, in 1993. It is quite a ‘light’ stemmer, as it makes use of inflectional linguistic morphology. The area of morphology (the internal structure of words) can be broken down into two subclasses, inflectional and derivational. Inflectional morphology describes predictable changes a […]



via WordPress http://ift.tt/1unuOrJ

Labels:

[repost ]Standalone Krovetz Stemmer

original:http://ift.tt/1r9VEon This is the stand alone distribution for the Krovetz stemmer, as used by both indri and galago. It provides both a C++ and a Java implementation, with a unified set of head word and exception data. It is suitable for inclusion in other projects which require a stemmer, and as a standalone utility. The […]



via WordPress http://ift.tt/1r9VEor

Labels:

Sunday, September 14, 2014

[repost ]Titan 0.5 Documentation

original:http://ift.tt/1sQZkMh Table of Contents I. Introduction 1. The Benefits of Titan 2. Architectural Overview 3. Getting Started II. Titan Basics 4. Configuration 5. Schema and Data Modeling 6. Gremlin Query Language 7. Titan Server 8. Indexing for better Performance 9. Transactions 10. Titan Cache 11. Transaction Log 12. Configuration Reference 13. Common Questions 14. Technical […]



via WordPress http://ift.tt/XiboKf

Labels:

[repost ]Graphs at Scale, Titan-Rexster: Gephi Visualization Options

original:http://ift.tt/1q3NuIW Following up on my post yesterday, I have also been looking at graphs the other way – from a scalable database to a manageable graph involving e.g. just one segment. There are currently two ways to do this: 1) Export the graph, and 2) streaming the graph from and to the graph database. The […]



via WordPress http://ift.tt/1BDLIa2

Labels:

[repost ]Awesome Scala

original:http://ift.tt/1qUoFoT A community driven list of useful Scala libraries, frameworks and software. This is not a catalog of all the libraries, just a starting point for your explorations. Inspired by awesome-python. Other amazingly awesome lists can be found in the awesome-awesomeness list. Awesome Scala Database Web Frameworks i18n Authentication Testing JSON Manipulation Serialization Science and […]



via WordPress http://ift.tt/1y2fiYq

Labels:

[repost ]快速了解Scala技术栈

original: 我无可救药地成为了Scala的超级粉丝。在我使用Scala开发项目以及编写框架后,它就仿佛凝聚成为一个巨大的黑洞,吸引力使我不得不飞向它,以至于开始背离Java。固然Java 8为Java阵营增添了一丝亮色,却是望眼欲穿,千呼万唤始出来。而Scala程序员,却早就在享受lambda、高阶函数、trait、隐式转换等带来的福利了。 Java像是一头史前巨兽,它在OO的方向上几乎走到了极致,硬将它拉入FP阵营,确乎有些强人所难了。而Scala则不,因为它的诞生就是OO与FP的混血儿——完美的基因融合。 “Object-Oriented Meets Functional”,这是Scala语言官方网站上飘扬的旗帜。这也是Scala的野心,当然,也是Martin Odersky的雄心。 Scala社区的发展 然而,一门语言并不能孤立地存在,必须提供依附的平台,以及围绕它建立的生态圈。不如此,语言则不足以壮大。Ruby很优秀,但如果没有Ruby On Rails的推动,也很难发展到今天这个地步。Scala同样如此。反过来,当我们在使用一门语言时,也要选择符合这门语言的技术栈,在整个生态圈中找到适合具体场景的框架或工具。 当然,我们在使用Scala进行软件开发时,亦可以寻求庞大的Java社区支持;可是,如果选择调用Java开发的库,就会牺牲掉Scala给我们带来的福利。幸运的是,在如今,多数情况你已不必如此。伴随着Scala语言逐渐形成的Scala社区,已经开始慢慢形成相对完整的Scala技术栈。无论是企业开发、自动化测试或者大数据领域,这些框架或工具已经非常完整地呈现了Scala开发的生态系统。 快速了解Scala技术栈 若要了解Scala技术栈,并快速学习这些框架,一个好的方法是下载typesafe推出的Activator。它提供了相对富足的基于Scala以及Scala主流框架的开发模板,这其中实则还隐含了typesafe为Scala开发提供的最佳实践与指导。下图是Activator模板的截图: 那么,是否有渠道可以整体地获知Scala技术栈到底包括哪些框架或工具,以及它们的特性与使用场景呢?感谢Lauris Dzilums以及其他在Github的Contributors。在Lauris Dzilums的Github上,他建立了名为awesome-scala的Repository,搜罗了当下主要的基于Scala开发的框架与工具,涉及到的领域包括: Database Web Frameworks i18n Authentication Testing JSON Manipulation Serialization Science and Data Analysis Big Data Functional Reactive Programming Modularization and Dependency Injection Distributed Systems Extensions Android HTTP Semantic Web Metrics and Monitoring Sbt plugins 是否有“乱花渐欲迷人眼”的感觉?不是太少,而是太多!那就让我删繁就简,就我的经验介绍一些框架或工具,从持久化、分布式系统、HTTP、Web框架、大数据、测试这六方面入手,作一次蜻蜓点水般的俯瞰。 持久化 归根结底,对数据的持久化主要还是通过JDBC访问数据库。但是,我们需要更好的API接口,能更好地与Scala契合,又或者更自然的ORM。如果希望执行SQL语句来操作数据库,那么运用相对广泛的是框架ScalikeJDBC,它提供了非常简单的API接口,甚至提供了SQL的DSL语法。例如: […]



via WordPress http://ift.tt/1y2fiIa

Labels: