1、创建Maven项目

1、首先创建一个Maven项目

2、添加scala SDK

Scala代码的编写需要依赖JDK,在创建Maven工程的时候,首先便需要指定JDK。

因此为了后续创建Spark项目(正如上面所说,一方面是Scala本身需要依赖JDK,另一方面用来管理项目构建的Maven,其创建也需要依赖JDK)的时候不用每次都去配置JDK,这里先进行一次全局配置。首先在欢迎界面点击Configure,然后点击Plugins:

3、修改pom.xml,加入以下内容,并进行导入

<dependencies>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.12</artifactId>
        <version>3.0.1</version>
        </dependency>
</dependencies>

2、将Scala的框架添加到这个项目中

3、修改pom.xml,加入以下内容

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.12</artifactId>
    <version>3.0.1</version>
</dependency>

要点右上角有个按钮,等它加载一会,如下图的按钮:

4、创建scala文件目录。

在main目录下创建scala目录

 输入文件目录名:scala

 将scala目录标记为源代码根目录


此时如果发现没有scala类

我是在pom.xml里面加了以下代码,加在dependence后面,也可以在添加一次框架,看看scala有没有勾上

    <build>
        <!-- 指定 Scala 源码目录 -->
        <sourceDirectory>src/main/scala</sourceDirectory>
<!--        <testSourceDirectory>src/test/scala</testSourceDirectory>-->

        <plugins>
            <!-- Scala 编译插件:关键!让 Maven 支持 Scala -->
            <plugin>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>scala-maven-plugin</artifactId>
                <version>4.8.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
<!--                <configuration>-->
<!--                    <scalaVersion>${scala.version}</scalaVersion>-->
<!--                </configuration>-->
            </plugin>

            <!-- 确保编译时包含 Scala 类 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <executions>
                    <!-- 跳过默认的编译,由 scala-maven-plugin 处理 -->
                    <execution>
                        <id>default-compile</id>
                        <phase>none</phase>
                    </execution>
                    <execution>
                        <id>compile</id>
                        <phase>compile</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <source>8</source>
                    <target>8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

然后就能出现了:

5、创建scala类。

6、编写程序代码。

文件peoplejson内的数据是:

{"name":"Michael"}
{"name":"Andy", "age":30}
{"name":"Justin", "age":19}

文件放这里:

在SparkSQLFirst里面写:

import org.apache.spark.sql.SparkSession

object SparkSQLFirst {
  def main(args: Array[String]): Unit = {

    // 创建spark Session对象
    val spark = SparkSession.builder()
      .master("local")
      .appName("app")
      .getOrCreate()
    //spark所有隐式转换
    //内部类是属于外部类对象的
    import spark.implicits._
    //读文件
    val inputDF=spark.read.json("datas/people.json")
    //输出inputDF类型
    println(inputDF.getClass)
    //输出inputDF
    inputDF.show(30)
    // 将DataFrame保存成csv文件
    inputDF.write.csv("datas/peoplewrite.csv")
  }
}

7、运行程序。

感觉警告太多,在src/resources里面创建了一个文件:log4j.properties

往里面写:

# ???????? WARN???? WARN ? ERROR ??
log4j.rootLogger=WARN, console

# ???????
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n

# ?? Spark ???? INFO ??
log4j.logger.org.apache.spark=WARN
log4j.logger.org.apache.spark.scheduler=WARN
log4j.logger.org.apache.spark.executor=WARN
log4j.logger.org.apache.spark.network=WARN
log4j.logger.org.apache.hadoop=WARN
log4j.logger.io.netty=WARN

# ??????????
log4j.logger.your.package.name=INFO

就能:

 

更多推荐