《快学Scala》读书笔记心得与精华提炼

版权申诉
0 下载量 171 浏览量 更新于2024-09-28 收藏 66KB ZIP 举报
资源摘要信息: "《快学Scala》是一本面向初学者的Scala编程语言学习书籍,它以清晰的结构和详实的内容帮助读者快速掌握Scala这门功能强大的编程语言。本书的读书笔记详细记录了学习过程中的关键知识点和作者的个人理解,对于想要深入了解Scala语言的开发者来说是不可多得的学习资料。" 知识点一:Scala语言概述 Scala是一种多范式编程语言,将面向对象编程(OOP)与函数式编程(FP)特性无缝结合,它运行在Java虚拟机(JVM)上,与Java完全兼容。Scala的设计目标是提供一种简洁、表达性强的编程语言,使得开发更快速、代码更简洁、程序更安全。Scala是静态类型的,但其类型推断能力使得在很多情况下无需显式声明类型,简化了代码编写过程。 知识点二:Scala语言特性 1. 面向对象编程:Scala完全支持面向对象编程的所有特性,如类、对象、继承、封装、多态等。它还引入了特质(Traits)的概念,允许多重继承和混入(Mixins),使得代码复用和模块化更加灵活。 2. 函数式编程:Scala提供了丰富的函数式编程特性,包括不可变数据、高阶函数、函数字面量、闭包、尾递归优化等,这些特性有助于编写无副作用的代码,提高程序的可预测性和并发性。 3. 静态类型系统:Scala的静态类型系统提供了类型安全,减少运行时错误。同时,它的类型推断机制使得类型声明更加简洁,编写和维护代码更加方便。 知识点三:基本语法结构 1. 基本数据类型和操作:Scala提供了丰富的基本数据类型,包括数字类型(如Int, Double等)、字符类型(Char)和布尔类型(Boolean)。此外,Scala还支持强大的字符串操作。 2. 控制结构:Scala中的控制结构,如条件语句(if-else)、循环语句(for, while)、模式匹配等,都具有函数式语言的特点。 3. 类和对象:Scala中的类和对象定义与其他面向对象语言类似,但它增加了更多高级特性,例如伴生对象(companion object)和应用对象(app object)。 4. 集合框架:Scala的集合框架非常强大,提供了多种集合类型,包括序列(List、Seq)、集(Set)、映射(Map)等。它还支持函数式的集合操作,如map、reduce、filter等。 知识点四:高级主题 1. 并发编程:Scala提供了丰富的并发工具,包括Future和Promise,它们是实现异步编程的基石。此外,Scala的Actor模型为并发操作提供了另一种选择。 2. 交互式编程:Scala支持交互式编程,其REPL(Read-Eval-Print-Loop)环境允许开发者快速执行Scala代码片段,并立即看到结果。 3. Scala与Java的互操作:由于Scala运行在JVM上,它能无缝地使用Java的库和框架,并且Java代码也能直接调用Scala代码。 知识点五:阅读实践 本读书笔记的实践部分可能包括了作者学习Scala过程中的案例研究、实际编程练习和心得感悟。通过对案例的分析和编码实践,作者能够深入理解Scala的各种语言特性和编程范式。读书笔记可能还包括对Scala生态系统中的工具和库的介绍,比如构建工具SBT、测试框架ScalaTest、数据库访问库Slick等。 知识点六:学习策略和资源推荐 对于想要学习Scala的读者,本读书笔记可能提供了学习策略建议,如循序渐进地学习语法、通过项目实践深化理解、参与开源社区获得反馈等。此外,还可能推荐了相关的学习资源,如在线教程、官方文档、技术博客、视频课程等,帮助读者拓展学习渠道,更全面地掌握Scala语言。 总结来说,这份《快学Scala》的读书笔记汇集了Scala编程语言的核心知识点、高级特性、学习实践和学习策略,为Scala学习者提供了一个全面的学习指南。通过细致的阅读和实践,读者能够建立起扎实的Scala编程基础,进而在日常开发工作中游刃有余地运用Scala解决问题。

Exception in thread "main" java.lang.RuntimeException: java.lang.NoSuchFieldException: DEFAULT_TINY_CACHE_SIZE at org.apache.spark.network.util.NettyUtils.getPrivateStaticField(NettyUtils.java:131) at org.apache.spark.network.util.NettyUtils.createPooledByteBufAllocator(NettyUtils.java:118) at org.apache.spark.network.server.TransportServer.init(TransportServer.java:95) at org.apache.spark.network.server.TransportServer.<init>(TransportServer.java:74) at org.apache.spark.network.TransportContext.createServer(TransportContext.java:114) at org.apache.spark.rpc.netty.NettyRpcEnv.startServer(NettyRpcEnv.scala:118) at org.apache.spark.rpc.netty.NettyRpcEnvFactory$$anonfun$4.apply(NettyRpcEnv.scala:454) at org.apache.spark.rpc.netty.NettyRpcEnvFactory$$anonfun$4.apply(NettyRpcEnv.scala:453) at org.apache.spark.util.Utils$$anonfun$startServiceOnPort$1.apply$mcVI$sp(Utils.scala:2237) at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:160) at org.apache.spark.util.Utils$.startServiceOnPort(Utils.scala:2229) at org.apache.spark.rpc.netty.NettyRpcEnvFactory.create(NettyRpcEnv.scala:458) at org.apache.spark.rpc.RpcEnv$.create(RpcEnv.scala:56) at org.apache.spark.SparkEnv$.create(SparkEnv.scala:246) at org.apache.spark.SparkEnv$.createDriverEnv(SparkEnv.scala:175) at org.apache.spark.SparkContext.createSparkEnv(SparkContext.scala:257) at org.apache.spark.SparkContext.<init>(SparkContext.scala:432) at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2509) at org.apache.spark.sql.SparkSession$Builder$$anonfun$6.apply(SparkSession.scala:909) at org.apache.spark.sql.SparkSession$Builder$$anonfun$6.apply(SparkSession.scala:901) at scala.Option.getOrElse(Option.scala:121) at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:901) at com.cssl.scala720.KafkaSparkStreamingHBase$.main(KafkaSparkStreamingHBase.scala:28) at com.cssl.scala720.KafkaSparkStreamingHBase.main(KafkaSparkStreamingHBase.scala) Caused by: java.lang.NoSuchFieldException: DEFAULT_TINY_CACHE_SIZE at java.lang.Class.getDeclaredField(Class.java:2070) at org.apache.spark.network.util.NettyUtils.getPrivateStaticField(NettyUtils.java:127) ... 23 more Process finished with exit code 1

2023-07-24 上传

2023-06-02 23:12:37 WARN NativeCodeLoader:60 - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Setting default log level to "WARN". To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel). Traceback (most recent call last): File "mysqlTest.py", line 12, in <module> jdbcDF=spark.read.format("jdbc").option("url","jdbc:mysql://localhost:3306/sparktest?useSSL=false").option("driver","com.mysql.cj.jdbc.Driver").option("dbtable","employee").option("user", "root").option("password", "123456").load() File "/usr/local/spark/python/pyspark/sql/readwriter.py", line 172, in load return self._df(self._jreader.load()) File "/usr/local/spark/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py", line 1257, in __call__ File "/usr/local/spark/python/pyspark/sql/utils.py", line 63, in deco return f(*a, **kw) File "/usr/local/spark/python/lib/py4j-0.10.7-src.zip/py4j/protocol.py", line 328, in get_return_value py4j.protocol.Py4JJavaError: An error occurred while calling o31.load. : java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at org.apache.spark.sql.execution.datasources.jdbc.DriverRegistry$.register(DriverRegistry.scala:45) at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions$$anonfun$5.apply(JDBCOptions.scala:99) at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions$$anonfun$5.apply(JDBCOptions.scala:99) at scala.Option.foreach(Option.scala:257) at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions.<init>(JDBCOptions.scala:99) at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions.<init>(JDBCOptions.scala:35) at org.apache.spark.sql.execution.datasources.jdbc.JdbcRelationProvider.createRelation(JdbcRelationProvider.scala:32) at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:318) at org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:223) at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:211) at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:167) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244) at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357) at py4j.Gateway.invoke(Gateway.java:282) at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132) at py4j.commands.CallCommand.execute(CallCommand.java:79) at py4j.GatewayConnection.run(GatewayConnection.java:238) at java.lang.Thread.run(Thread.java:748)

2023-06-03 上传

报错Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties 23/06/01 20:24:22 INFO SparkContext: Running Spark version 2.0.0 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/collections/map/UnmodifiableMap at org.apache.hadoop.conf.Configuration$DeprecationContext.<init>(Configuration.java:409) at org.apache.hadoop.conf.Configuration.<clinit>(Configuration.java:448) at org.apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.java:260) at org.apache.hadoop.security.UserGroupInformation.loginUserFromSubject(UserGroupInformation.java:790) at org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:760) at org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:633) at org.apache.spark.util.Utils$$anonfun$getCurrentUserName$1.apply(Utils.scala:2245) at org.apache.spark.util.Utils$$anonfun$getCurrentUserName$1.apply(Utils.scala:2245) at scala.Option.getOrElse(Option.scala:121) at org.apache.spark.util.Utils$.getCurrentUserName(Utils.scala:2245) at org.apache.spark.SparkContext.<init>(SparkContext.scala:297) at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2256) at org.apache.spark.sql.SparkSession$Builder$$anonfun$8.apply(SparkSession.scala:831) at org.apache.spark.sql.SparkSession$Builder$$anonfun$8.apply(SparkSession.scala:823) at scala.Option.getOrElse(Option.scala:121) at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:823) at spark.sparkMysql$.main(sparkToMysql.scala:11) at spark.sparkMysql.main(sparkToMysql.scala) Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections.map.UnmodifiableMap at java.net.URLClassLoader.findClass(URLClassLoader.java:382) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 18 more Process finished with exi

2023-06-02 上传