一开始SparkSession.builder().appName()方法报错。java.lang.NoSuchMethodError:org.apache.spark.internal.config.package$.EXECUTOR_ALLOW_SPARK_CONTEXT(),上网搜索了
错,说是spark和scala版本不对,我的scala是2.12.7,网上说spark3.0对应的scala要至少2.12.10,于是费劲力气升级scala,还是报错。
然后终于找到一个解决办法就是,maven换了使用人数更多的版本,https://mvnrepository.com/search?q=spark
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.12</artifactId>
<version>3.0.1</version>#原本是3.0.0
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.12</artifactId>
<version>3.0.1</version>
</dependency>
object spark_sql {
def main(args: Array[String]) {
//创建 SparkConf()并设置 App 名称
val spark = SparkSession.builder().master("local")
.appName("Spark SQL basic example")
// .config("spark.some.config.option", "some-value")
.getOrCreate()
//导入隐式转换
import spark.implicits._
//读取本地文件,创建 DataFrame
val df = spark.read.json("D:/githubFile/learning-spark/src/python/people.json")
//打印
df.show()
//DSL 风格:查询年龄在 21 岁以上的
df.filter($"age" > 21).show()
//创建临时表
df.createOrReplaceTempView("persons")
//SQL 风格:查询年龄在 21 岁以上的
spark.sql("SELECT * FROM persons where age > 21").show()
//关闭连接
spark.stop()
}
}
people.json内容如下:
成功: