Мне нужно прочитать файл в spark
(databricks
) как bytes
и преобразовать его в строку.
file_bytes.decode("utf-8")
Все нормально, и у меня есть данные,как строка с разделителями трубы, включая возврат каретки и т. д. Все это выглядит хорошо.Что-то вроде:
"Column1"|"Column2"|"Column3"|"Column4"|"Column5"
"This"|"is"|"some"|"data."|
"Shorter"|"line."|||
Я хочу это в dataframe
, хотя, чтобы я мог манипулировать им, и первоначально я пытался использовать следующее:
df = sqlContext.read.format("csv")
.option("header", "true")
.option("inferSchema", "true")
.option("delimiter", '|')
.load(???)
Я ценю эточасть load()
действительно предназначена для того, чтобы быть путем к месту на filesystem
... поэтому я боролся с этим.
Поэтому я вернулся к использованию pandas
, поскольку оно делает жизньнамного проще:
import io
import pandas
temp = io.StringIO(file_bytes.decode("utf-8"))
df = pandas.read_csv(temp, sep="|")
Это pandas
dataframe
, а не spark
dataframe
, который, насколько я знаю (и это очень слабая осведомленность), имеет плюсыи минусы, связанные с тем, где он находится (в памяти), который связан с масштабируемостью / использованием кластера и т. д.
Первоначально, есть ли способ для меня получить свою строку в spark
dataframe
, используя sqlContext
?Может быть, мне не хватает какого-либо параметра или переключателя и т. Д., Или я должен просто придерживаться pandas
?
Главное, что меня беспокоит, это то, что сейчас файлы довольно маленькие (200 КБ или около того), ноони не могут быть вечными, и я хотел бы повторно использовать шаблон, который позволит мне работать с более крупными вещами (именно поэтому я немного обеспокоен использованием панд).