#palantir-foundry #foundry-code-repositories
#palantir-foundry #foundry-code-репозитории
Вопрос:
В качестве примера у меня есть .csv
, который использует диалект Excel, который использует что-то вроде модуля csv Python doubleQuote
для экранирования кавычек.
Например, рассмотрим строку ниже:
"XX ""YYYYYYYY"", ZZZZZZ ""QQQQQQ""","JJJJ ""MMMM"", RRRR ""TTTT""",1234,RRRR,60,50
Я бы хотел, чтобы схема затем стала:
[
'XX "YYYYYYYY", ZZZZZZ "QQQQQQ"',
'JJJJ "MMMM", RRRR "TTTT"',
1234,
'RRRR',
60,
50
]
Есть ли способ установить схему набора данных программным / автоматическим способом?
Ответ №1:
Хотя вы можете сделать это в коде, приложение foundrys dataset-app также может делать это изначально. Это означает, что вы можете пропустить написание кода (что приятно), но также означает, что вы можете потенциально сохранить шаг в своем конвейере (что может сэкономить время выполнения).
После загрузки файлов в набор данных нажмите «редактировать схему» в наборе данных:
Затем примените настройки, подобные приведенным ниже, что приведет к желаемому результату в вашем случае:
Затем нажмите «сохранить и проверить», и набор данных должен получить правильную схему:
Ответ №2:
Начиная с этого примера:
Dataset<Row> dataset = files
.sparkSession()
.read()
.option("inferSchema", "true")
.csv(csvDataset);
output.getDataFrameWriter(dataset).write();
Добавьте параметры header
, quote
, и escape
, например, так:
Dataset<Row> dataset = files
.sparkSession()
.read()
.option("inferSchema", "true")
.option("header", "true")
.option("quote", """)
.option("escape", """)
.csv(csvDataset);
output.getDataFrameWriter(dataset).write();