Spark загрузить CSV-файл в JAR из папки ресурсов - PullRequest
1 голос
/ 07 марта 2019

Я пытаюсь создать приложение Spark, работающее в Scala, которое читает файл .csv, расположенный в каталоге src/main/resources, и сохраняет его в локальном экземпляре hdfs.Все работает замечательно, когда я запускаю его локально, когда бы я ни связывал его как файл .jar и развертывал его на сервере, что-то пойдет не так ...

Это мой код, который находится в src/main/scala,расположение моего файла данных: src/main/resources/dataset.csv:

val df = spark.read
  .format("csv")
  .option("header", "true")
  .option("inferSchema", "true")
  .load(getClass.getResource("dataset.csv").toString())

Когда я создаю банку, вызывая sbt package и развертываю ее на своем сервере, я получаю следующую ошибку:

Exception in thread "main" java.lang.IllegalArgumentException: 
java.net.URISyntaxException: 
Relative path in absolute URI: jar:file:/root/./myapp_2.11-0.1.jar!/dataset.csv

Как правильно указать ссылку на мой файл?

Ответы [ 2 ]

0 голосов
/ 08 марта 2019

Это работает для меня:

import spark.implicits._
val ds = spark.createDataset[String](Source.fromInputStream(
getClass.getResourceAsStream("/path/to/file")).getLines().toSeq)

val input = spark.read.format("csv")

Больше примеров вы можете найти здесь

0 голосов
/ 08 марта 2019

Из сообщения об ошибке похоже, что искра ожидает абсолютный путь, а вы указываете относительный путь к файлу. Я всегда указываю абсолютный путь к файлу (hdfs: // если файл находится в HDFS или file: // если файл локальный). Пример кода ниже.

import org.apache.spark.sql.SparkSession
val spark = SparkSession.builder.appName("My spark app").config("master","yarn").getOrCreate()
import spark.implicits._
val df = spark.read.json("hdfs:///user/amalprakash32203955/data/people.json")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...