Как извлечь имя CSV из фрейма искры - PullRequest
0 голосов
/ 27 июня 2019

Нашей настройкой является PySpark.Предположим, я создаю фрейм данных df с помощью функции spark.read.csv, то есть

df = spark.read.csv("directory/name_file.csv")

Теперь мне нужен способ для извлечения «name_file» без необходимости копирования и вставки вручную.Другими словами, я хочу список искры или фрейм данных, который содержит только строку "name_file".

Пожалуйста, предоставьте только решение, включающее PySpark SQL или Python-код, совместимый с PySpark.

проблема кажется простой, но я потратил много времени в поисках решения, ничего не получая.

1 Ответ

1 голос
/ 27 июня 2019

для этого есть функция: input_file_name Тогда вы split.

from pyspark.sql import functions as F

df = df.withColumn("path", F.input_file_name())
df = df.withColumn("path_splitted", F.split("path","/"))
df = df.withColumn("name", F.col("path_splitted").getItem(F.size("path_splitted")-1))

df.show()
+---+--------------+--------+----------------+
| id|          path|    name|   path_splitted|
+---+--------------+--------+----------------+
|  1|/foo/bar.csv  |bar.csv |[, foo, bar.csv]|
+---+--------------+--------+----------------+



РЕДАКТИРОВАТЬ : с помощью spark 2.4 вы можете использовать reverse, чтобы легко получить последний элемент

F.reverse("path_splitted").getItem(0)

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