intellij运行spark:无法解析预期的符号和标识符,但找到字符串文本&';'应为“”,但找到“”“”

pxyaymoc  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(550)

各位,我对通过intellij idea运行spark有疑问。如果有人能帮我,我将非常感激。非常感谢。我在谷歌上搜索过,我试过了,但是什么都没有改变,甚至让结果更糟,所以我只保留原版。
我已经输入了一些简单的scala代码来测试通过intellijidea运行的spark,但是出现了一些错误。我的问题是:
1请看一下图1和图2。有2个错误“无法解析symbol==”和“value'$'不是stringconext的成员”,详细信息如图3所示。
2如果我用“/”注解错误的代码行,那么代码可以运行,df可以读取和显示,但是计算平均值的代码行不起作用。错误如图4和图5所示。
有谁能帮我解决这两个问题吗。非常感谢!!!
演示
pom.xml文件
错误1
错误2
最终结果
以下是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 case对象代码:

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))
  }
}
hlswsv35

hlswsv351#

所以,连接函数出错的第一个原因是参数错误。在你的第一个连接函数中 groupBy 会回来的 RelationalGroupedDataset 女巫不是 Dataframe . 你需要一些东西 groupBy 功能。看看我的例子。供使用 $ 在列名中,您需要 import spark.implicits._ . 还有,你需要 import org.apache.spark.sql.functions._ 要使用标准Spark柱函数,请参见:

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 . 最好在系统中完成,而不是以编程方式。

相关问题