Только для чтения паркетный файл - PullRequest
1 голос
/ 06 мая 2019

Я хочу прочитать несколько файлов паркета из папки, которая также содержит некоторые другие типы файлов (csv, avro) в кадре данных. Я хочу читать только если его паркет и пропустить и перейти к следующему, если таковые имеются. Проблема в том, что файл паркета может не иметь расширения и кодек также может отличаться от файла к файлу. В Spark-scala есть способ сделать это?

1 Ответ

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

Вы можете заранее получить имена файлов следующим образом:

improt org.apache.spark.sql.DataFrame
import scala.sys.process._

val fileNames: List[String] = "hdfs dfs -ls /path/to/files/on/hdfs".!!
                             .split("\n")
                             .filter(_.endsWith(".parquet"))
                             .map(_.split("\\s").last).toList

val df: DataFrame = spark.read.parquet(fileNames:_*)

spark в приведенном выше коде является объектом SparkSession.Этот код должен работать и для версий Spark 1.x, поскольку сигнатура метода для parquet() одинакова в версиях Spark 1.x и Spark 2.x.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...