Pyspark Dataframes as View - PullRequest
       13

Pyspark Dataframes as View

0 голосов
/ 13 мая 2019

Для сценария, который я запускаю, у меня есть несколько связанных цепочек представлений, которые просматривали определенный набор данных в sql (я использую Apache Spark SQL):

%sql
create view view_1 as
select column_1,column_2 from original_data_table

Эта логика завершаетсяview_n.Однако затем мне нужно выполнить логику, которую сложно (или невозможно) реализовать в sql, в частности, команду explode:

%python
df_1 = sqlContext.sql("SELECT * from view_n")
df1_exploded=df_1.withColumn("exploded_column", explode(split(df_1f.col_to_explode,',')))

Мои вопросы:

  1. Существуют ли затраты на скорость, связанные с переключением таблиц sql в таблицы данных pyspark и обратно?Или, поскольку фреймы данных pyspark оцениваются лениво, очень ли это похоже на представление?

  2. Есть ли лучший способ переключения таблицы sql и таблицы sql на фрейм данных pyspark?

1 Ответ

1 голос
/ 13 мая 2019

Вы можете использовать explode() и почти все, что есть у DF через Spark SQL (https://spark.apache.org/docs/latest/api/sql/index.html)

print(spark.version)
2.4.3

df = spark.createDataFrame([(1, [1,2,3]), (2, [4,5,6]), (3, [7,8,9]),],["id", "nest"])
df.printSchema()

root
 |-- id: long (nullable = true)
 |-- nest: array (nullable = true)
 |    |-- element: long (containsNull = true)

df.createOrReplaceTempView("sql_view")
spark.sql("SELECT id, explode(nest) as un_nest FROM sql_view").show()

df.createOrReplaceTempView("sql_view")
spark.sql("SELECT id, explode(nest) as flatten FROM sql_view").show()

+---+-------+
| id|flatten|
+---+-------+
|  1|      1|
|  1|      2|
|  1|      3|
|  2|      4|
|  2|      5|
|  2|      6|
|  3|      7|
|  3|      8|
|  3|      9|
+---+-------+

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...