Код: Выделить всё
{"main":{"honda":1,"toyota":2,"BMW":5,"Fiat":4}}
< /code>
Я импортирует в pyspark, как это: < /p>
car_map = spark.read.json('s3_path/car_map.json')
дал существующий DataFrame:
.data = [(1, 'BMW'),
(2, 'Ford'),
(3, 'honda'),
(4, 'Cadillac'),
(5, 'Fiat')]
df = spark.createDataFrame(data, ["ID", "car"])
+---+--------+
| ID| car|
+---+--------+
| 1| BMW|
| 2| Ford|
| 3| honda|
| 4|Cadillac|
| 5| Fiat|
+---+--------+
< /code>
Как я могу применить отображение в car_map для df, создав новый столбец "x"? Например, если df.car находится в car_map.main, установите x на номер. Иначе, установите x до 99. < /p>
Результат должен быть похожим на SO: < /p>
+---+--------+---+
| ID| car| x|
+---+--------+---+
| 1| BMW| 5|
| 2| Ford| 99|
| 3| honda| 1|
| 4|Cadillac| 99|
| 5| Fiat| 4|
+---+--------+---+
< /code>
Если есть другие преобразования, чтобы это было проще, я открыт. Например, UDF, словарь, массив, взрыв и т. Д.
Подробнее здесь: https://stackoverflow.com/questions/795 ... er-datafra