Удалять пробелы из строк при разделении на & ldquo;, & rdquo;

Ошибка, которую вы видите, должна быть почти понятной. Существует строгое сопоставление типов Catalyst / SQL и типов Scala, которые можно найти в в соответствующем разделе из справочника Spark SQL, DataFrames и Datasets Guide .

В частности, типы struct преобразуются в o.a.s.sql.Row (в вашем конкретном случае данные будут отображаться как Seq[Row]).

Существуют разные методы, которые могут использоваться для отображения данных как конкретных типов :

с использованием только прежнего подхода может быть применимым в этом конкретный сценарий.

Если вы хотите получить доступ к investments.funding_round.raised_amount с помощью UDF, вам понадобится что-то вроде этого:

val getRaisedAmount = udf((investments: Seq[Row]) => scala.util.Try(
  investments.map(_.getAs[Row]("funding_round").getAs[Long]("raised_amount"))
).toOption)

, но простой select должен быть намного безопаснее и чище:

df.select($"investments.funding_round.raised_amount")

1
задан Saneth Chandrasekara 30 March 2019 в 22:49
поделиться

1 ответ

Измените .split(Pattern.quote(",")); на шаблон регулярного выражения, соответствующий пробелу до и после запятой (которую не нужно заключать в кавычки). Например,

.split("\\s*,\\s*");

с этим изменением я получаю

Varibels : name1, name2,  name3
names: name1
names: name2
names: name3
0
ответ дан Wiktor Stribiżew 30 March 2019 в 22:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: