@ Arvy
Я не уверен, почему вы хотели бы сделать это. Ваша таблица должна иметь согласованные столбцы. Однако это можно сделать с помощью простого выбора и объединения.
Pyspark
Создать фрейм данных:
values = [
(1, "David", 501, 2018, "English"),
(2, "Nancy", 501, 2018, "English"),
(3, "Shyam", 502, 2018, "Hindu"),
]
df = sqlContext.createDataFrame(values, ['Id', 'PersonName', 'Dept', 'year', 'Language'])
Создать новый фрейм данных:
from pyspark.sql.functions import lit
col_names = ["col1", "col2", "col3"]
df1 = df.select('ID', 'Dept', 'year').toDF(*col_names)
df2 = df.select('ID', 'PersonName', 'Language').toDF(*col_names)
df3 = df.select('ID', 'PersonName').withColumn('a', lit('')).toDF(*col_names)
df_random = df1.union(df2).union(df3).orderBy('col1')
df_random.show()
Скала
Создать новый фрейм данных:
import org.apache.spark.sql.{functions, Column, DataFrame, SQLContext}
val col_names = Seq("col1", "col2", "col3")
val df1 = df.select("ID", "Dept", "year").toDF(col_names: _*)
val df2 = df.select("ID", "PersonName", "Language").toDF(col_names: _*)
val df3 = df.select("ID", "PersonName").withColumn("a", lit("")).toDF(col_names: _*)
val df_random = df1.union(df2).union(df3).orderBy("col1")
df_random.show()