Ошибка создания файла jar для spark scala - PullRequest
0 голосов
/ 09 апреля 2020

Я собираюсь создать свой первый jar-файл spark scala с использованием IntelliJ IDEA.

Я только что попытался импортировать файл csv, но он не работает. Вот мой код:

import org.apache.spark.{SparkConf, SparkContext}

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


        val sc = new SparkContext(new SparkConf().setAppName("ex1"))

        val data = sc.read.option("header","true").option("inferSchema","true").csv(args(0))



        data.saveAsTextFile(args(1))
      }

    }

Когда я пытаюсь упаковать этот код для создания файла JAR с использованием IntelliJ IDEA, я получаю следующую ошибку:

[info] Compiling 1 Scala source to C:\Users\Downloads\Count\target\scala-2.11\classes ...
[error] C:\Users\Downloads\Count\src\main\scala\jar1.scala:14:24: value read is not a member of org.apache.spark.SparkContext
[error]     val data = sc.read.option("header","true").option("inferSchema","true").csv(args(0))
[error]                        ^
[error] one error found
[error] (Compile / compileIncremental) Compilation failed

В чем может быть причина за это?

Спасибо

Ответы [ 2 ]

2 голосов
/ 09 апреля 2020

Ну, сообщение об ошибке фактически говорит вам, почему:

нет read метод в SparkContext классе.

Если вы отметите все API, SparkContext может предложить (https://spark.apache.org/docs/2.3.1/api/scala/index.html#org. apache .spark.SparkContext ),

не найдет read метод внутри ...

1 голос
/ 09 апреля 2020

Если вы используете SparkContext, возможно, вам придется использовать метод textFile,

val data = sc.textFile(args(0))

Но мне это кажется немного странным, кажется, вы используете синтаксис SparkSession, я Я бы предпочел SparkSession:

import org.apache.spark.sql.SparkSession

 val spark = SparkSession
      .builder()
      .appName("ex1")
      .getOrCreate()

А вот как вы можете прочитать свой CSV

val data = spark.read.format("csv")
                     .option("header","true")
                     .option("inferSchema","true")
                     .load(args(0))

Вы можете проверить об этом здесь и о том, как читать CSV здесь

РЕДАКТИРОВАТЬ

Для сохранения результатов:

data.write.format("text").save(args(1))
...