Scala Days NYC 2016:亮点


Scala Days一开始很棒,一个顺利的登记和一个令人敬畏的场地在新的世界舞台。一份美味的早餐和小贩已经提供,并传播Scala的爱。塔帕德提供了一个凉爽的休息室,有电话和电连接。零食,咖啡和饮料都很充足,摆在货架的顶层,随时可以买到。从微服务到大数据,Scala的所有内容都有讨论。这些供应商是Scalaists中的Scala,是Scala社区中非常活跃的非常酷的供应商。


Martin Odersky做了一个很棒的演讲:Scala The Road Ahead他还签署了他更新的书,“Programming in Scala第三版,updated for 2.12”。

另一个很棒的演讲是由Dean Wampler和Andy Petrella主持的--“Scala:数据科学不可预测的通用语deanwampler和@noootsab。)Github)所有的例子都在Spark笔记本上,这是Andy的类似Zeppelin的项目。他的工具包是:

带有Scala 2.11.7,Spark 1.5.2,Hadoop 2.7.1,Hive,Parquet的Spark笔记本

演讲重点介绍了由Hadoop和Spark启用的大数据分布式数据科学,使用Scala和笔记本作为数据探索和科学实验的主要界面。Spark和Hadoop是企业级的开放源码实现,通过JavaScript,Ruby和Python等简单API可以实现这一点。Scala以对象函数式编程为基础,非常适合这种新的分布式科学。

有趣的引语

  • “Spark with Java毫无意义”

  • “在Java中它只是噪音”

  • “Spark集合默认是懒惰的。”

  • Spark的RDD API受Scala collections API的启发。“

  • Spark Scala RDD中常见的元组语法,键值对

  • 使用groupBy()。count.OrderBy()编写富有表现力的DSL,而不是为SparkSQL嵌入SQL字符串。

  • Scala是Spark的最新API,具有所有特性,适合企业使用。

  • 新的大数据世界需要一个大数据团队:IT和数据科学家作为一个团队一起工作,以发布可在生产企业集群上部署的东西。

工具,端口模型和发明新模型

Scala with Devices-Chariot Solutions有一个展台展示了一个非常酷的演示,里面有一些Raspberry PI运行JVM,使用Scala和Akka与服务器对话,还有一些仪表板可以实时更新。

用Akka集群直接介绍分布式系统概念

David Russell,软件开发商@HootSuite Media Inc。

@Davidgraig

关键词:RAFT,八卦协议,分布式共识,连接到twitter流的AKKA集群

分布式系统的8大谬误

(AKKA帮你解决这些问题)

  • 网络可靠

  • 延迟为零

  • 带宽是无限的

  • 拓扑结构不变

  • 网络是同质的

(这里AKKA不帮忙)

  • 有一个管理员

  • 运输成本为零

  • 网络安全

CAP定理

一致性(所有节点,相同数据,相同时间),可用性(每个请求都得到及时响应),分区容忍度(不能有分裂的大脑)。不幸的是,这个自助餐只让你从3个中挑2个。你不能提供所有的三包,总是需要P,要么选C,要么选A。

八卦协议

每个节点保存集群的状态并将其告知邻居;PAXOS或集中状态数据库的选择不能很好地扩展。对于实时,快速的数据,Gossip协议是困难的。收敛:AKKA用于制定管理集群的决策。AKKA使用故障检测器检测节点何时发生故障,以确定邻居是否可达。可能发生的情况是,您得到了网络分区;集群节点的岛在它们之间通信和传播不良数据,这些数据与集群的其余部分被切断。你可以尝试人工干预监控,那不是很好的扩展,谁想要那份工作?查看作者公司的更多AKKA文章HootSuite

AKKA Insights:分布式数据(在AKKA 2.4中处于实验阶段)允许合并友好的数据类型,从而使用无冲突的复制数据类型/CRDT来维护整个集群的状态

带LightBend订阅的AKKA2.3中的分裂脑解析器;根据仲裁大小做出决策或保留最早的节点。它根据集群的上次已知状态做出决策。

另请参阅:

Redis Plugin for AKKA

AKKA on Raspberry PI

在Apache Spark中构建推荐系统并使用Akka进行集成

Willem MeintsTechnical Evangelist@Info Support@willem_meintsMicrosoft MVP



 

对于在Spark中做推荐,交替最小二乘是你的主要选择。Willem给出的一个有趣的Spark提示是,总是为您的应用程序命名,以便您能够在4040 UI或Spark History UI中找到它

config.setAppName("MyUniqueSparkAppName")

很酷的一句话:“Scala是自您使用Scala以来最优秀的语言只写一次,不读一次。“

让推荐变得困难的是,你有一个稀疏的评论矩阵(r=U*I),它可能相当庞大并且不断增长。没有办法最优地解决用户评论和要评论的项目数量这两个问题。你为U的矩阵中的每个单元格选取一个随机数,然后用成本函数(最小二乘-近似,最小化期望值和实际值之间的误差)操作项目因子。然后你再试一次,为矩阵中的每一个单元随机选取#,为I,这是一个NP难问题。您需要运行许多迭代,这就是Spark with YARN集群的优点。你需要多次调整迭代次数,Rank和Lambda来得到你喜欢的结果。

Github

1.存储推荐

步骤2:测量用户在系统中点击了哪些项目

3.计算数字

使用多个迭代的连续部署,并使用AKKA微服务启动异步火花作业,以进行恒定的运行流。

快速摘要

英特尔有一些大数据和Scala的开源基准。一个关键是,您需要将JDK/JVM的最佳版本与Scala的最佳版本配对。这就需要对标。

Github

其他资源