Создайте один из нескольких столбцов кадра данных искры - Scala экв Python - PullRequest
0 голосов
/ 28 апреля 2020

Я использую ниже в python для преобразования значения ключа из нескольких столбцов (Dataframe interactivelexternalid, имеющий 2 столбца InternalId и ExternalId, возвращенных из spark sql) и объединил его в один столбец "body" в Python.

jsonDf = interalexternalid.select(to_json(struct([interalexternalid[x] for x in interalexternalid.columns])).alias("body"))
display(jsonDf)

Подобные результаты:

"body"
{"InternalId":480941,"ExternalId":"a020H00001Tt7NrQAJ"}
{"InternalId":480942,"ExternalId":"a020H00001Tt7NsQAJ"}

Как мне добиться того же в Scala? Извините, я не в мире Scala, но пытаюсь наверстать упущенное в указанной c области scala, если это достижимо так же, как в Python

Пожалуйста, не отмечайте это как не пробовал как другой мир в scala из python, где тот же код не работает

1 Ответ

1 голос
/ 29 апреля 2020

Если я вас правильно понял, вы можете сделать то, что вам нужно, так:

val df = Seq(
  (480941, "a020H00001Tt7NrQAJ"),
  (480942, "a020H00001Tt7NsQAJ")
).toDF("InternalId", "ExternalId")
df.show()
+----------+------------------+
|InternalId|        ExternalId|
+----------+------------------+
|    480941|a020H00001Tt7NrQAJ|
|    480942|a020H00001Tt7NsQAJ|
+----------+------------------+

import org.apache.spark.sql.functions._
jsonDf = df.select(to_json(struct(df.columns.map(col):_*)).alias("body"))
jsonDf.show(truncate = false)

+-------------------------------------------------------+
|body                                                   |
+-------------------------------------------------------+
|{"InternalId":480941,"ExternalId":"a020H00001Tt7NrQAJ"}|
|{"InternalId":480942,"ExternalId":"a020H00001Tt7NsQAJ"}|
+-------------------------------------------------------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...