大三寒假生活8

今天完成了实验五的第一个,熟悉了Spark SQL 基本操作,在安装插件的时候也遇到了以下的问题

首先是在弄scala插件的时候,当scala安装成功后报错

1、Could not create the view: org.apache.hadoop.eclipse.view.servers

然后eclipse的所有关于hadoop的东西消失。

解决方法:

遇到这个问题时,网上方法大多如删除.metadata文件,尝试此方法后没有作用;最简单的方法是卸载eclipse,重新安装;比起试那些解决方法,这个更加省时间;

eclipse加载第三方插件时,如果eclipse版本是高版本(网上说是3.5以上),会有一个dropins这个文件;所以可以将要加载的jar包解压后复制到eclipse-dropins文件下,restart eclipse就OK;千万不要复制到plugins文件下,特别容易导致出错!!!

试了各种解决方法都没有解决,无奈之下重新安装了eclipse,然后在跟着教程走了一遍,成功解决。

 

2、安装好了scala插件之后进入eclipse报错

JDT Weaving is currently disabled.The Scala IDE needs JDT Weaving to be active,or it will not work as expected.
Activate JDT Weaving and restart Eclipse?(Highly Recommended)

解决方法:

本人安装scala插件是在scala下载的解压包,解压后复制到eclipse的dropins文件下的然后虽然有了scala但是进入eclipse报的错,我想可能是因为解压包中有artifacts.jar、content.jar和site.xml。

在网上查阅资料后得知如果压缩包中只包含features和plugins文件夹可以直接复制到eclipse的dropins文件下。但如果包含artifacts.jar、content.jar和site.xml上述操作很可能会失败。建议在eclipse中在线下载

于是

点击help——install new software

点击Add

选择name后面的Local按钮

选择刚才下载下来的解压目录,确定后会出现几个插件选项,我全选了,然后就是一路next。成功

 

如果在线下载报错无法解决的话,可以直接去官网下载解压包,然后在install new software下载解压包中的东西。

 

 

然后是今天的实验。

将下列 json 数据复制到你的 ubuntu 系统/usr/local/spark 下,并保存命名为 employee.json。 
{ "id":1 ,"name":" Ella","age":36 }
{ "id":2,"name":"Bob","age":29 }
{ "id":3 ,"name":"Jack","age":29 }
{ "id":4 ,"name":"Jim","age":28 }
{ "id":5 ,"name":"Damon" }
{ "id":5 ,"name":"Damon" }
为 employee.json 创建 DataFrame,并写出 Scala 语句完成下列操作: 
 
scala> import org.apache.spark.sql.SparkSession
scala> val spark=SparkSession.builder().getOrCreate()
scala> import spark.implicits._
scala> val df = spark.read.json("file:///usr/local/spark/employee.json")
 
(1) 查询所有数据;
 
scala> df.show() 
 
(2) 查询所有数据,并去除重复的数据;
 
scala> df.distinct().show()
 
(3) 查询所有数据,打印时去除 id 字段;
 
scala> df.drop("id").show()
 
(4) 筛选出 age>30 的记录;
 
scala> df.filter(df("age") > 30 ).show()
 
(5) 将数据按 age 分组;
 
scala> df.groupBy("name").count().show() 
 
(6) 将数据按 name 升序排列;
 
scala> df.sort(df("name").asc).show()
 
(7) 取出前 3 行数据;
 
scala> df.take(3) 或 scala> df.head(3)
 
(8) 查询所有记录的 name 列,并为其取别名为 username;
 
scala> df.select(df("name").as("username")).show()
 
(9) 查询年龄 age 的平均值;
 
scala> df.agg("age"->"avg")
 
(10) 查询年龄 age 的最小值。
 
scala> df.agg("age"->"min")
 
 
未解决的问题:
在用eclipse编写scala项目的时候产生了包导入失败相关的报错,然后配置文件的版本说找不到。明天解决,并进行下边的实验。

posted on 2020-02-04 22:06  哈萨K  阅读(177)  评论(0编辑  收藏  举报