Есть ли в фрейме данных pyspark функция, похожая на pandas .io. json .json_normalize - PullRequest
0 голосов
/ 23 января 2020

Я хотел бы выполнить операцию, аналогичную pandas .io. json .json_normalize - это фрейм данных pyspark. Есть ли в искре эквивалентная функция?

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.io.json.json_normalize.html

1 Ответ

0 голосов
/ 23 января 2020

Spark имеет похожую функцию explode(), но она не полностью идентична.

Вот как работает взрыв на очень высоком уровне.

>>> from pyspark.sql.functions import explode,col

>>> data = {'A': [1, 2]}

>>> df = spark.createDataFrame(data)

>>> df.show()
 +------+
 |     A|
 +------+
 |[1, 2]|
 +------+

>>> df.select(explode(col('A')).alias('normalized')).show()
+----------+
|normalized|
+----------+
|         1|
|         2|
+----------+

С другой стороны, вы могли бы преобразовать Spark DataFrame в Pandas DataFrame, используя:

  • spark_df.toPandas() -> использовать json_normalize (), а затем вернуться обратно в Spark DataFrame.

  • Чтобы вернуться обратно в Spark DataFrame, вы должны использовать spark.createDataFrame(pandas_df).

Обратите внимание, что это решение туда-обратно не идеально, так как вызывает Pandas () , приводит к тому, что все записи DataFrame будут собраны (.collect ()) в драйвер и может привести к ошибкам памяти при работе с большими наборами данных.

Приведенная ниже ссылка дает более подробные сведения об использовании Pandas (): DF.to pandas () с ошибкой выброса в pyspark

Надеюсь, это поможет и хорошо удачи!

...