Перебирайте несколько файлов в нескольких папках и загружайте все в DF, если имя соответствует условию - PullRequest
0 голосов
/ 27 октября 2019

Я пытаюсь перебрать много файлов во многих папках в файле данных. Я две идеи, как показано ниже.

// first attempt
import org.apache.spark.sql.functions.input_file_name
val myDFCsv = spark.read.format("csv")
   .option("sep","|")
   .option("inferSchema","true")
   .option("header","false")
   .load("mnt/rawdata/corp/CW*.gz")
   .withColumn("file_name", input_file_name())

myDFCsv.count()

// second attempt
import org.apache.spark.sql.functions.input_file_name

val myDFCsv = spark.read
   .option("sep", "|")
   .option("inferSchema", "true")
   .option("header", "false")
   .csv("mnt/rawdata/corp/CW*.gz")
   .withColumn("file_name", input_file_name())

myDFCsv.count()

В обоих случаях я получаю эту ошибку.

myDFCsv:org.apache.spark.sql.DataFrame = [_c0: string, _c1: string ... 3 more fields]
import org.apache.spark.sql.functions.input_file_name
myDFCsv: org.apache.spark.sql.DataFrame = [_c0: string, _c1: string ... 3 more fields]
res11: Long = 97

Это должно быть очень близко к работе, но что-то кажетсябыть выключенным, и я не могу сказать, что это. Может кто-нибудь указать на проблему и дать мне знать, что здесь не так? Большое спасибо.

1 Ответ

1 голос
/ 27 октября 2019

Здесь все в порядке, это не ошибка, вывод говорит вам, что у вас:

  1. есть датафрейм: myDFCsv с 5 полями
  2. сделал импортorg.apache.spark.sql.functions.input_file_name
  3. имеет фрейм данных myDFCsv с 5 полями
  4. подсчитал количество строк в фрейме данных, и в результате вы получили 97

Вы можете начать использовать фрейм данных и просматривать его содержимое, используя следующую команду: myDFCsv.show(false)

Вы также можете проверить схему вашего фрейма данных, используя следующую операцию: myDFCsv.printSchema()

Надеюсь, это поможет,

...