<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Sbt on ZRJ | 学习笔记</title>
        <link>https://blog.zrj.me/tags/sbt/</link>
        <description>Recent content in Sbt on ZRJ | 学习笔记</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-CN</language>
        <lastBuildDate>Thu, 21 Apr 2016 09:51:24 +0800</lastBuildDate><atom:link href="https://blog.zrj.me/tags/sbt/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>spark 操作 hbase</title>
        <link>https://blog.zrj.me/posts/2016-04-21-spark-%E6%93%8D%E4%BD%9C-hbase/</link>
        <pubDate>Thu, 21 Apr 2016 09:51:24 +0800</pubDate>
        
        <guid>https://blog.zrj.me/posts/2016-04-21-spark-%E6%93%8D%E4%BD%9C-hbase/</guid>
        <description>&lt;p&gt;之前说到这个，&lt;a class=&#34;link&#34; href=&#34;http://zrj.me/archives/1621&#34;  title=&#34;spark 操作 mysql&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;spark 操作 mysql&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;=========================&lt;/p&gt;
&lt;p&gt;买一送一，hbase 的：&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;http://www.iteblog.com/archives/1051&#34;  title=&#34;http://www.iteblog.com/archives/1051&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Spark读取Hbase中的数据&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;======================&lt;/p&gt;
&lt;p&gt;关于操作 hbase，还有这两个文章，&lt;a class=&#34;link&#34; href=&#34;http://wuchong.me/blog/2015/04/06/spark-on-hbase-new-api/&#34;  title=&#34;http://wuchong.me/blog/2015/04/06/spark-on-hbase-new-api/&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Spark 下操作 HBase（1.0.0 新 API）&lt;/a&gt;，&lt;a class=&#34;link&#34; href=&#34;https://gist.github.com/wuchong/95630f80966d07d7453b&#34;  title=&#34;https://gist.github.com/wuchong/95630f80966d07d7453b&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://gist.github.com/wuchong/95630f80966d07d7453b&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;都是不错的，另外说一下，&amp;ldquo;org.apache.hbase&amp;rdquo; % &amp;ldquo;hbase-client&amp;rdquo; % &amp;ldquo;1.1.3&amp;rdquo; 这个包貌似是有问题的，这个版本有问题，反正之前在 pom.xml 下也是报错，需要&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;nt&#34;&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;org.apache.hbase&lt;span class=&#34;nt&#34;&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;nt&#34;&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;hbase-client&lt;span class=&#34;nt&#34;&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;nt&#34;&gt;&amp;lt;version&amp;gt;&lt;/span&gt;1.1.3&lt;span class=&#34;nt&#34;&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;nt&#34;&gt;&amp;lt;exclusions&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;				&lt;span class=&#34;nt&#34;&gt;&amp;lt;exclusion&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;					&lt;span class=&#34;nt&#34;&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;jdk.tools&lt;span class=&#34;nt&#34;&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;					&lt;span class=&#34;nt&#34;&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;jdk.tools&lt;span class=&#34;nt&#34;&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;				&lt;span class=&#34;nt&#34;&gt;&amp;lt;/exclusion&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;nt&#34;&gt;&amp;lt;/exclusions&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;nt&#34;&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;才能行，但是傻逼的 sbt，配了 1.1.3 加上 &amp;ldquo;org.apache.hbase&amp;rdquo; % &amp;ldquo;hbase-client&amp;rdquo; % &amp;ldquo;1.1.3&amp;rdquo; exclude(&amp;ldquo;jdk.tools&amp;rdquo;, &amp;ldquo;jdk.tools&amp;rdquo;) 也还是出不来，本来是 hbase-client 的问题，但是关键是如果我之前没有在 pom.xml 中操作过的话，单靠 sbt 是完全不知道有这种坑的，以后估计还要被坑，而且毫无办法&lt;/p&gt;
&lt;p&gt;最终使用了教程中的 1.0.0 版本能跑通，虽然我的 hbase server 是 1.1.3 的，但愿 api 没有大变吧&lt;/p&gt;
&lt;p&gt;libraryDependencies += &amp;ldquo;org.apache.hbase&amp;rdquo; % &amp;ldquo;hbase-client&amp;rdquo; % &amp;ldquo;1.0.0&amp;rdquo;&lt;/p&gt;
&lt;p&gt;libraryDependencies += &amp;ldquo;org.apache.hbase&amp;rdquo; % &amp;ldquo;hbase-common&amp;rdquo; % &amp;ldquo;1.0.0&amp;rdquo;&lt;/p&gt;
&lt;p&gt;libraryDependencies += &amp;ldquo;org.apache.hbase&amp;rdquo; % &amp;ldquo;hbase-server&amp;rdquo; % &amp;ldquo;1.0.0&amp;rdquo;&lt;/p&gt;
&lt;p&gt;额外吐槽一下那个 libraryDependencies 语法，可以 ++= Seq( ，问题是里面还要逗号分隔，问题是我添来删去的，哪能帮你把逗号伺候的那么到位啊，真是自娱自乐，还有那个 %% % 语法，简洁是简洁了，看得不懂得人是一脸懵逼啊，这都啥字段和啥字段啊，pom 那样 xml 清清楚楚的不好吗，又不用人手敲，机器自动生成，是在不行，复制粘贴也成啊&lt;/p&gt;
&lt;p&gt;再次向 sbt 致以诚挚的问候&lt;/p&gt;
&lt;p&gt;=====================&lt;/p&gt;
&lt;p&gt;2016-4-21 09:56:48 如果遇到 noclassdef 问题，看这里，&lt;a class=&#34;link&#34; href=&#34;http://mangocool.com/detail_1_1437009997261.html&#34;  title=&#34;http://mangocool.com/detail_1_1437009997261.html&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;=====================&lt;/p&gt;
&lt;p&gt;2016-4-21 10:06:02 原文中用的是 libraryDependencies += &amp;ldquo;org.apache.spark&amp;rdquo; %% &amp;ldquo;spark-core&amp;rdquo; % &amp;ldquo;1.3.0&amp;rdquo;，我因为自己有了一个 &amp;ldquo;org.apache.spark&amp;rdquo; %% &amp;ldquo;spark-core&amp;rdquo; % &amp;ldquo;1.5.0&amp;rdquo; % &amp;ldquo;provided&amp;rdquo;,就想着把这个 1.3.0 去掉，结果就报错，class &amp;ldquo;javax.servlet.FilterRegistration&amp;rdquo;&amp;rsquo;s signer information does not match signer information of other classes in the same package，这里，&lt;a class=&#34;link&#34; href=&#34;https://issues.apache.org/jira/browse/SPARK-1693&#34;  title=&#34;https://issues.apache.org/jira/browse/SPARK-1693&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://issues.apache.org/jira/browse/SPARK-1693&lt;/a&gt;，也有讨论，还是乖乖把依赖加上吧&lt;/p&gt;
&lt;p&gt;=======================&lt;/p&gt;
&lt;p&gt;2016-4-21 14:17:34 &lt;a class=&#34;link&#34; href=&#34;http://mangocool.com/detail_1_1437009997261.html&#34;  title=&#34;http://mangocool.com/detail_1_1437009997261.html&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration&lt;/a&gt; 这里说可以加上 classpath，确实能解部分问题，但是死活报错 java.lang.ClassNotFoundException: org.apache.htrace.Trace，我把 jar 包放好了，指定了 classpath，也还是不行，后来才知道，踏马的原来有两个，libraryDependencies += &amp;ldquo;org.htrace&amp;rdquo; % &amp;ldquo;htrace-core&amp;rdquo; % &amp;ldquo;3.0.4&amp;rdquo; 这个名字不对，应该是 libraryDependencies += &amp;ldquo;org.apache.htrace&amp;rdquo; % &amp;ldquo;htrace-core&amp;rdquo; % &amp;ldquo;3.1.0-incubating&amp;rdquo;&lt;/p&gt;
&lt;p&gt;=========================&lt;/p&gt;
&lt;p&gt;2016-4-21 14:38:31 报错 Calculating region sizes for table 卡半天，仔细一看才发现 zk 连接到 2181 上去了，那是另外一个 zk，貌似没有读取 hbase-site.xml 里面的东西，赶紧代码里加上 conf.set(&amp;ldquo;hbase.zookeeper.property.clientPort&amp;rdquo;, &amp;ldquo;2222&amp;rdquo;)&lt;/p&gt;
</description>
        </item>
        <item>
        <title>scala 上手</title>
        <link>https://blog.zrj.me/posts/2016-04-20-scala-%E4%B8%8A%E6%89%8B/</link>
        <pubDate>Wed, 20 Apr 2016 08:35:24 +0800</pubDate>
        
        <guid>https://blog.zrj.me/posts/2016-04-20-scala-%E4%B8%8A%E6%89%8B/</guid>
        <description>&lt;p&gt;随着 spark 使用深入，越来越感觉用 java 是不行的了，社区里大家都用 scala 讨论，用 java 就像一个语言不通的人一样，换呗，先搭环境，再学语法，都不是什么难点，就是花时间，环境最是烦人，耗时耗力还不讨好，语法倒好，以我十八般武艺样样不精通的经验来说，就是个类似 js 的函数式，不难&lt;/p&gt;
&lt;p&gt;先看环境问题，&lt;a class=&#34;link&#34; href=&#34;http://blog.csdn.net/oopsoom/article/details/38363369&#34;  title=&#34;http://blog.csdn.net/oopsoom/article/details/38363369&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;scala eclipse sbt 应用程序开发&lt;/a&gt;，&lt;a class=&#34;link&#34; href=&#34;http://scalatutorials.com/beginner/2013/07/18/getting-started-with-sbt/&#34;  title=&#34;http://scalatutorials.com/beginner/2013/07/18/getting-started-with-sbt/&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;From zero to a Scala SBT project with Eclipse / Intellij IDEA support&lt;/a&gt;，算是比较手把手的文档&lt;/p&gt;
&lt;p&gt;这里有提到一个文件夹生成不出来的问题，算了，也就是自己动手建立一个文件夹的事情，&lt;a class=&#34;link&#34; href=&#34;http://stackoverflow.com/questions/34838393/creating-empty-eclipse-project-using-sbt&#34;  title=&#34;http://stackoverflow.com/questions/34838393/creating-empty-eclipse-project-using-sbt&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Creating empty eclipse project using sbt&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这里有两个插件，&lt;a class=&#34;link&#34; href=&#34;https://github.com/sbt/sbt-assembly&#34;  title=&#34;https://github.com/sbt/sbt-assembly&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;sbt/sbt-assembly&lt;/a&gt;，&lt;a class=&#34;link&#34; href=&#34;https://github.com/typesafehub/sbteclipse&#34;  title=&#34;https://github.com/typesafehub/sbteclipse&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/typesafehub/sbteclipse&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;至此能够打出一个 fat jar 包来&lt;/p&gt;
&lt;p&gt;======================================================&lt;/p&gt;
&lt;p&gt;然后就是琢磨着怎么换 repo 源的问题了，这年代，啥语言都要搞一个自己的包管理，也是醉了&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/int32bit/notes/blob/master/linux/%E4%BF%AE%E6%94%B9sbt%E5%92%8Cmaven%E9%95%9C%E5%83%8F%E6%BA%90.md&#34;  title=&#34;https://github.com/int32bit/notes/blob/master/linux/%E4%BF%AE%E6%94%B9sbt%E5%92%8Cmaven%E9%95%9C%E5%83%8F%E6%BA%90.md&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;修改sbt和maven镜像源&lt;/a&gt;，这里给出了详细的配置单&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;修改sbt镜像源&lt;/p&gt;
&lt;p&gt;以使用oschina镜像源为例，在~/.sbt/下添加一个repositories文件，里面内容如下：&lt;/p&gt;
&lt;p&gt;[repositories] local osc: &lt;a class=&#34;link&#34; href=&#34;http://maven.oschina.net/content/groups/public/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://maven.oschina.net/content/groups/public/&lt;/a&gt; typesafe: &lt;a class=&#34;link&#34; href=&#34;http://repo.typesafe.com/typesafe/ivy-releases/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://repo.typesafe.com/typesafe/ivy-releases/&lt;/a&gt;, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly sonatype-oss-releases maven-central sonatype-oss-snapshots&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这里，&lt;a class=&#34;link&#34; href=&#34;http://ju.outofmemory.cn/entry/74281&#34;  title=&#34;http://ju.outofmemory.cn/entry/74281&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;问候sbt一千遍之：添加全局镜像库&lt;/a&gt;，提到了注意事项：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;注意：&lt;/p&gt;
&lt;p&gt;要放在`&lt;del&gt;/.sbt`目录下，而不是`&lt;/del&gt;/.sbt/0.13.x`这样的子目录下&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;并且问候了 sbt，看来想问候的不止我一个人&lt;/p&gt;
&lt;p&gt;这里，&lt;a class=&#34;link&#34; href=&#34;https://segmentfault.com/a/1190000002474507&#34;  title=&#34;https://segmentfault.com/a/1190000002474507&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;加速 SBT 下载依赖库的速度&lt;/a&gt;，进一步说了不要配太多&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;因为, 下载过程中 SBT 会串行的 &amp;ldquo;询问&amp;rdquo; 列表中所有的远程仓库, 无论是否找得到.&lt;/p&gt;
&lt;p&gt;当依赖树越大, 整个下载的过程就更漫长. 若再遇到响应慢的仓库, 情况恶化的令人发指.&lt;/p&gt;
&lt;p&gt;推荐列表策略是:&lt;/p&gt;
&lt;p&gt;本地仓库 国内(或内网)镜像仓库 国外官方仓库, 通常 # 注释掉, 待上面不管用时, 去掉 # 再做尝试&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;另外还有一个兼容的问题&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;兼容 Ivy 路径布局 大多数中心仓库(repository)是 Maven 的路径布局, 这就导致 SBT 的插件和部分 Ivy 依赖无法从其下载.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;=============================================&lt;/p&gt;
&lt;p&gt;2016-4-20 10:55:58&lt;/p&gt;
&lt;p&gt;配置了私有仓库还是要去下墙外的，看这里，&lt;a class=&#34;link&#34; href=&#34;http://afoo.me/posts/2014-11-05-how-make-sbt-jump-over-GFW.html&#34;  title=&#34;http://afoo.me/posts/2014-11-05-how-make-sbt-jump-over-GFW.html&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SBT免翻墙手册&lt;/a&gt;，&lt;a class=&#34;link&#34; href=&#34;http://lishaofengstar.blog.163.com/blog/static/131972852201492302456564/&#34;  title=&#34;http://lishaofengstar.blog.163.com/blog/static/131972852201492302456564/&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SBT连接私有仓库&lt;/a&gt; ，再问候一遍 sbt&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;http://www.flystarhe.com/2016/04/13/scala-sbt/&#34;  title=&#34;http://www.flystarhe.com/2016/04/13/scala-sbt/&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Sbt使用笔记&lt;/a&gt;，这里有一篇中文文档定义说明&lt;/p&gt;
&lt;p&gt;============================&lt;/p&gt;
&lt;p&gt;2016-4-20 12:21:52 至于怎么在 scala 打日志的问题，&lt;a class=&#34;link&#34; href=&#34;http://stackoverflow.com/questions/978252/logging-in-scala&#34;  title=&#34;http://stackoverflow.com/questions/978252/logging-in-scala&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://stackoverflow.com/questions/978252/logging-in-scala&lt;/a&gt;，这里说了用 sfl4j，&lt;a class=&#34;link&#34; href=&#34;http://alvinalexander.com/scala/how-to-use-java-style-logging-slf4j-scala&#34;  title=&#34;http://alvinalexander.com/scala/how-to-use-java-style-logging-slf4j-scala&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://alvinalexander.com/scala/how-to-use-java-style-logging-slf4j-scala&lt;/a&gt;，这里说了怎么引入引用，但是引进来发现还是不行，看到这里，&lt;a class=&#34;link&#34; href=&#34;http://alvinalexander.com/scala/how-to-log-output-file-grizzled-slf4j-scala-simplelogger.properties&#34;  title=&#34;http://alvinalexander.com/scala/how-to-log-output-file-grizzled-slf4j-scala-simplelogger.properties&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://alvinalexander.com/scala/how-to-log-output-file-grizzled-slf4j-scala-simplelogger.properties&lt;/a&gt;，说用 simple log 配置文件，想起来 multi bind 的问题，于是去掉了一个 simple log 的依赖，就可以了&lt;/p&gt;
&lt;p&gt;============================&lt;/p&gt;
&lt;p&gt;2016-4-20 13:10:28，再来说说 scala 中为啥用 object 不用 class，看这里，&lt;a class=&#34;link&#34; href=&#34;http://stackoverflow.com/questions/1755345/difference-between-object-and-class-in-scala&#34;  title=&#34;http://stackoverflow.com/questions/1755345/difference-between-object-and-class-in-scala&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://stackoverflow.com/questions/1755345/difference-between-object-and-class-in-scala&lt;/a&gt;，说的算比较好了&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Briefly You can think of the object keyword as creating a singleton object of a class that is defined implicitly.&lt;/p&gt;
&lt;p&gt;Not So Briefly Consider the example&lt;/p&gt;
&lt;p&gt;object A extends B with C { def f(x: Any): Any = ??? } From the Scala view, this declaration&lt;/p&gt;
&lt;p&gt;declares an anonymous (inaccessible) class that extends both B and C, and creates a single instance of this class named A. This means A can be passed to functions expecting objects of type B or C, and method f can be called using A.f(&amp;hellip;).&lt;/p&gt;
&lt;p&gt;Additional Features of object There exist some special methods that can be defined for objects:&lt;/p&gt;
&lt;p&gt;def apply(&amp;hellip;) enables the usual method name-less syntax of A(&amp;hellip;) def unapply(&amp;hellip;) allows to create custom pattern matching extractors if accompanying a class of the same name, the object assumes a special role when resolving implicit parameters&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;其实说白了还是为了函数式的编程模式来考虑的&lt;/p&gt;
&lt;p&gt;===================&lt;/p&gt;
&lt;p&gt;2016-4-20 17:55:48 当你遇到报错 org.apache.spark#spark-mllib_2.10_2.11;1.3.0: not found 的时候，尝试一下 &amp;ldquo;org.apache.spark&amp;rdquo; % &amp;ldquo;spark-mllib_2.10&amp;rdquo; % &amp;ldquo;1.1.0&amp;rdquo; 记得先拜拜神&lt;/p&gt;
&lt;p&gt;===================================&lt;/p&gt;
&lt;p&gt;2016-4-20 18:45:19 经过无数遍像傻逼一样的试错，终于被我试出来一个能用 mllib 的：&lt;/p&gt;
&lt;p&gt;scalaVersion := &amp;ldquo;2.10.6&amp;rdquo; &amp;ldquo;org.apache.spark&amp;rdquo; %% &amp;ldquo;spark-core&amp;rdquo; % &amp;ldquo;1.5.0&amp;rdquo;, &amp;ldquo;org.apache.spark&amp;rdquo; % &amp;ldquo;spark-mllib_2.10&amp;rdquo; % &amp;ldquo;1.3.0&amp;rdquo;,&lt;/p&gt;
&lt;p&gt;再次向 sbt 致以诚挚的问候&lt;/p&gt;
&lt;p&gt;==================================&lt;/p&gt;
&lt;p&gt;2016-4-20 18:52:23 &lt;a class=&#34;link&#34; href=&#34;http://stackoverflow.com/questions/2742719/how-do-i-break-out-of-a-loop-in-scala&#34;  title=&#34;http://stackoverflow.com/questions/2742719/how-do-i-break-out-of-a-loop-in-scala&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://stackoverflow.com/questions/2742719/how-do-i-break-out-of-a-loop-in-scala&lt;/a&gt;，scala 中是没有 break 的，spark 是不允许带 return 的，真是阳春白雪，行，你牛逼&lt;/p&gt;
&lt;p&gt;===========================&lt;/p&gt;
&lt;p&gt;2016-4-20 20:15:15 打的包多了，assembly 的时候就开始抽风，报冲突，看这里，&lt;a class=&#34;link&#34; href=&#34;https://github.com/sbt/sbt-assembly&#34;  title=&#34;https://github.com/sbt/sbt-assembly&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/sbt/sbt-assembly&lt;/a&gt;，说要我一个个去 extra，有病啊，吃饱撑的？&lt;a class=&#34;link&#34; href=&#34;http://stackoverflow.com/questions/25144484/sbt-assembly-deduplication-found-error&#34;  title=&#34;http://stackoverflow.com/questions/25144484/sbt-assembly-deduplication-found-error&#34;
     target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://stackoverflow.com/questions/25144484/sbt-assembly-deduplication-found-error&lt;/a&gt;，看这里，简单粗暴，直接 scope 为 provided&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
