Невозможно прочитать локальный файл JSON с помощью spark submit - PullRequest
0 голосов
/ 19 мая 2019

Я читаю файл JSON в Scala Spark, используя

val df = spark.read.json (properties.getProperty ("jsonFilePath")))

Этот кодработает, когда я запускаю из своей IDE (Intellij), но когда я пытаюсь выполнить с помощью команды spark-submit, выдается следующее сообщение

INFO FileScanRDD: Reading File path: file:///Users/path/to/json/file.json, range: 0-8822, partition values: [empty row]

Я не могу обработать данные JSON из-за этого.Любая идея, что может происходить здесь?

Вот моя команда spark submit:

${SPARK_HOME_DIR}/bin/spark-submit --master local ${SCALA_JAR_LOC}/<JARNAME>.jar

Я попытался предоставить ее как часть spark-submit с использованием опции --files.Нужна помощь

1 Ответ

0 голосов
/ 20 мая 2019

spark.read.json поддерживает чтение данных из файловой системы, поддерживаемой Hadoop. Если JSON является частью jar, который содержит ваш jar, вы можете использовать java API getClass.getResourceAsStream для считывания json из пути к классам задания.

Чтобы прочитать файл JSON из вашего classpath

def read(file: String): String = {
  val stream = getClass.getResourceAsStream(s"/$file")
  scala.io.Source.fromInputStream(stream)
    .getLines
    .toList
    .mkString(" ")
    .trim
    .replaceAll("\\s+", " ")
}

Поскольку вы хотите прочитать этот JSON как кадр данных в своем коде, вам, возможно, придется преобразовать строку в RDD, а затем в отдельный кадр данных записи.

val inputAsRDD = sparkCtxt.parallelize(List(read("/path/within/resources/folder")))
val df = sparkSession.read.json(inputAsRDD)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...