您现在的位置是:首页 >技术教程 >分布式课程——踩坑记录_2网站首页技术教程
分布式课程——踩坑记录_2
Q1: 新建Scala类时点击New没有Scala class出现
点击new时未出现Scala class是因为Scala相关配置未导入
可通过如下操作导入Scala配置:依次点击“File”——“Project Structure”——“Platform Settings”下的“Global Libraries”,右键选中中栏中的scala-sdk-2.11.12,选中“Add to Modules...”,随后在弹出来的界面选择“OK”,最后点击右下角“Apply”、“OK”即可。
可以成功new scala class了
Q2: No tests were found
运行Spark项目时显示没有找到测试模块,edit configuration后依然没用
step 1: 运行maven - Lifecycle - clean
运行完报错```Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M2:enforce (enforce-banned-dependencies) on project DSPP_Exercise: Some Enforcer rules have failed. Look above for specific messages explaining why the rule failed.```
根据报错这是enforce插件检测规则失败,
enforcer插件的作用: 对环境进行约束和检查
step 2: 进到源码的根目录下,找到pom.xml文件,打开它,找到maven-enforcer-plugin所在位置
如图,只有对规则校验的约束,那么设置规则校验失败不影响构建流程即可,将true改为false
运行成功
编程
数据类型的转换(使用scala编写)
parallelInput.rdd.map().reduce() // parallelInput为JavaRDD[Integer]类型
我们首先使用 rdd
方法将 JavaRDD[Integer]
类型的对象转换为 RDD[Integer]
类型的对象,然后使用 map()
方法将其转换为 RDD[Int]
类型的对象。如果使用reduce()
使会将`RDD[Int]`转换为`Int`型数据。
如果要得到`JavaRDD[Integer]`的数据类型应该先使用`map()`方法将`RDD[Int]`转化为`RDD[Integer]`,再使用`JavaRDD.fromRDD()`将`RDD[Integer]`转化为`JavaRDD[Integer]`,操作如下
val outputCount = count.map(Integer.valueOf(_)) // 将RDD[Int]转化为RDD[Integer]
JavaRDD.fromRDD(outputCount: RDD[Integer]) // 将RDD[Integer]转化为JavaRDD[Integer]