scala - IntelliJ 运行火花:无法解析预期的符号和标识符,但找到字符串文字 &';' 预期但 ')' 找到
问题描述
大家,我对通过intelliJ IDEA运行spark有疑问。如果有人可以为我提供帮助,我将不胜感激。太感谢了。我用谷歌搜索了它们,我试过了,但什么也没改变,甚至使结果更糟,所以我只保留原来的。
我输入了一些简单的scala代码来测试通过intelliJ IDEA运行的spark,但出现了一些错误。我的问题在这里:
1.请看图1和图2。有2个错误“无法解析符号===”和“值'$'不是StringConext的成员”,详细信息在图3中。
2.如果我用“//”注释了错误的代码行,那么代码可以运行,df可以读取并显示,但是计算平均值的代码行不起作用。错误显示在图 4 和图 5 中。
谁能帮我解决这两个问题。太感谢了!!!
这是我的 pom.xml 代码:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test.demo</groupId>
<artifactId>DemoProject</artifactId>
<version>1.0-SNAPSHOT</version>
<repositories>
<repository>
<id>apache</id>
<url>http://maven.apache.org</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-core</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.7.3</version>
</dependency>
</dependencies>
</project>
这是我的 scala 案例对象代码:
import org.apache.spark.sql.SparkSession
import java.io.File
import org.apache.spark
import org.apache.spark.sql.expressions.Window
import org.apache.spark.sql.functions._
object Demo {
def main(args: Array[String]): Unit = {
val spark = SparkSession
.builder()
.master("local[*]")
.appName("Spark SQL basic example")
.getOrCreate()
val peopleDFCsv = spark.read.format("csv")
.option("sep", "\t")
.option("header", "false")
.load("C:\\Users\\shell\\OneDrive\\Desktop\\marks.csv")
peopleDFCsv.printSchema()
peopleDFCsv.show(15)
val df = spark.read.option("inferScheme", "true").option("header", "true").csv("C:\\Users\\shell\\OneDrive\\Desktop\\marks.csv")
df.show()
df.withColumn("id", monotonically_increasing_id()).show
df.join(df.groupBy("max(marks)"), $"marks" === $"max(marks)", "leftsemi").show
df.join(df.filter("subject = maths").groupBy("max(marks)"). $"marks" === $"max(marks)", "leftsemi").show
df.join(df.filter("subject = maths").select(mean(df("marks")))).show
// val a = new File("./data").listFiles()
// a.foreach(file => println(file.getPath))
}
}
解决方案
因此,连接函数出错的第一个原因是参数错误。在您的第一个 join 函数groupBy
中将返回RelationalGroupedDataset
witch is not Dataframe
。你需要在groupBy
函数之后聚合一些东西。看看我的例子。要$
在列名中使用,您需要import spark.implicits._
. 此外,您需要import org.apache.spark.sql.functions._
使用标准火花列功能,请看:
import spark.implicits._
import org.apache.spark.sql.functions._
import java.io.File
val df = spark.read.option("inferScheme", "true").option("header", "true").csv("C:\\Users\\shell\\OneDrive\\Desktop\\marks.csv")
df.show()
// df.withColumn("id", monotonically_increasing_id()).show
df.join(df.groupBy("column_for_group").agg(max("marks")), $"marks" === max($"marks"), "leftsemi").show
df.join(df.filter("subject = maths").groupBy("column_for_group").agg(max("marks")), $"marks" === max($"marks"), "leftsemi").show
df.join(df.filter("subject = maths").select(mean(df("marks")))).show
val a = new File("./data").listFiles()
a.foreach(file => println(file.getPath))
可以通过设置正确的环境变量来解决 winutils 的错误。你需要谷歌搜索类似的东西windows 10 how set environment variable
。最好在系统中完成,而不是以编程方式。
推荐阅读
- java - 如何指定图标的跨平台路径?
- python - 如何将 Python 站点包文件夹(不包括在内)添加到 PyInstaller 规范文件?
- powerbi - 如何从 PowerBI 读取我的 ADLS Gen 1 中的镶木地板文件?
- javascript - Azure AD 身份验证使用 idToken 或 accessToken 失败。我应该使用哪一个?
- c# - 使 IObservable 订阅并发
- graphql - AWS Appsync Javascript 查询示例和输入语法
- javascript - 到达较小的断点时,滑块导航突然出现
- azure-active-directory - 如何在 24 小时后强制执行 MFA 会话到期
- visual-studio-code - 是否可以检测 VS Code 何时处于活动/非活动状态一段时间?
- python - 在 Python 中绘制 2 级 NEXRAD 雷达数据 - TypeError:“MaskedArray”对象不可调用