Spark читает несколько файлов: двойные кавычки заменены на% 22 - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть требования для чтения случайных файлов JSON в разных папках, где данные изменились.Поэтому я не могу применить регулярное выражение для чтения шаблона.Я знаю, что это за файлы, и могу перечислить их. Но когда я формирую строку со всем путем к файлу и пытаюсь прочитать json в spark.Двойные кавычки заменяются на% 22, и чтение файлов через искру не удается.Может ли кто-нибудь помочь, пожалуйста?

val FilePath = "\"/path/2019/02/01/*\"" + ","+ "\"path/2019/02/05/*\"" + "\"path/2019/02/24/*\""

FilePath:String = "path/2019/02/20/*","path/2019/02/05/*","path/2019/02/24/*"

Теперь, когда я использую эту переменную для чтения файлов JOSN, она завершается с ошибкой и кавычки заменяются на% 22.

spark.read.json(FilePath)

java.lang.IllegalArgumentException: java.net.URISyntaxException: Illegal character in scheme name at index 0: "/path/2019/02/01/*%22,%22/path/2019/02/05/*%22,%22/path/2019/02/24/*%22

1 Ответ

0 голосов
/ 26 февраля 2019

Я только что попробовал это с более старой версией Spark (1.6.0), и она прекрасно работает, если вы предоставляете отдельные пути или шаблоны подстановочных знаков как переменные для метода json, то есть:

sqlContext.read.json("foo/*", "bar/*")

Когда вы передаете несколько шаблонов в одной строке, Spark пытается создать из них один URI, что неверно, и пытается URL-кодировать символы кавычек как% 22.

Кроме того, попытка создать URI не удалась, потому что ваша строка начинается с двойной кавычки, что является недопустимым символом в этой позиции (RFC 3986):

Схемаимена состоят из последовательности символов, начинающихся с буквы
и сопровождаемых любой комбинацией букв, цифр, плюс
("+"), точки (".") или дефиса ("-").

...