Добавление столбцов между таблицами при объединении - PullRequest
0 голосов
/ 04 июня 2019
 Need to add new columns with constant values while joining two tables    
 using  pyspark. Using lit isn't solving the issue in Pyspark.

\\\**** Table A *******\\\\\\\

There are two tables A , B Table A as follows
 ID Day Name Description
 1   2016-09-01  Sam   Retail
 2   2016-01-28  Chris Retail
 3   2016-02-06  ChrisTY Retail
 4   2016-02-26  Christa Retail
 3   2016-12-06  ChrisTu Retail
 4   2016-12-31  Christi Retail

\\\**** Table B *****\\\\\\\
 Table B

ID SkEY
1  1.1
2  1.2
3  1.3

 from pyspark.sql import sparksession
 from pyspark.sql import functions as F
 from pyspark.sql.functions import lit
 from pyspark import HiveContext
 hiveContext= HiveContext(sc)


 ABC2 = spark.sql(
"select * From A where day ='{0}'".format(i[0])
 )
Join = ABC2.join(
 Tab2,
 (
    ABC2.ID == Tab2.ID
)
).select(
Tab2.skey,
ABC2.Day,
ABC2.Name,
ABC2.withColumn('newcol1, lit('')),
ABC2.withColumn('newcol2, lit('A')),
ABC2.Description
)
Join.select(
"skey",
"Day",
"Name",
"newcol1",
"newcol2",
"Description"
 ).write.mode("append").format("parquet").insertinto("Table")

ABC=spark.sql(
"select distinct day from A where day= '2016-01-01' "
)

Приведенный выше код вызывает проблемы даже после определения новых столбцов
и постоянных значений с подсветкой, также newcol1 должен принимать нулевое значение, а newcol2 - A

Новая таблица должна быть загруженасо следующими столбцами в том же порядке, в котором они представлены, а также с новыми столбцами с постоянными значениями

Ответы [ 2 ]

2 голосов
/ 05 июня 2019

Перепишите свой Join DF как:

Join = ABC2.join (Tab2, (ABC2.ID == Tab2.ID)) \ .select (Tab2.skey, ABC2.Day, ABC2.Name,) \ .withColumn ('newcol1', горит ("")) \ .withColumn ('newcol2', горит ("A"))

0 голосов
/ 05 июня 2019

Вы можете Join.select в нужном вам порядке, поэтому ваш код будет выглядеть так:

Join = ABC2.join (Tab2, (ABC2.ID == Tab2.ID)) \ .select (Tab2.skey, ABC2.Day, ABC2.Name, ABC2.Description) \ .withColumn ('newcol1', горит ("")) \ .withColumn ('newcol2', горит ("A"))

Join.select ("skey", "Day", "Name", "newcol1", "newcol2", "Description") .write.mode ("append"). Format ("parquet"). Insertinto ("Table«)

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