Мне нужно вставить записи в table1 , основываясь на количестве записей в другой таблице, скажем, table2 , используя искру pyspark. sql (). В настоящее время я могу получить одну запись, выполнив объединение, но мне нужно получить как можно больше записей, вставленных в таблицу 1 на основе 2-й таблицы.
Я предоставляю образцы данных здесь:
df1= sqlContext.createDataFrame([("xxx1","81A01","TERR NAME 01"),("xxx1","81A01","TERR NAME 02"), ("xxx1","81A01","TERR NAME 03")], ["zip_code","zone_code","territory_name"])
df2= sqlContext.createDataFrame([("xxx1","81A01","","NY")], ["zip_code","zone_code","territory_name","state"])
df1.show()
+--------+--------------+--------------+
|zip_code|zone_code |territory_name|
+--------+--------------+--------------+
| xxx1| 81A01| TERR NAME 01|
| xxx1| 81A01| TERR NAME 02|
| xxx1| 81A01| TERR NAME 03|
+---------------------------------------
# Print out information about this data
df2.show()
+--------+--------------+--------------+-----+
|zip_code|zone_code |territory_name|state|
+--------+--------------+--------------+-----+
| xxx1| 81A01| null | NY|
+---------------------------------------------
В Приведенный выше пример, мне нужно присоединиться к df2 с df1, основываясь на zip_code, и получить столько же записей, сколько для территория_имя в df1.
Ожидаемый результат в df2:
+--------+--------------+--------------+-----+
|zip_code|zone_code |territory_name|state|
+--------+--------------+--------------+-----+
| xxx1| 81A01| TERR NAME 01| NY|
| xxx1| 81A01| TERR NAME 02| NY|
| xxx1| 81A01| TERR NAME 03| NY|
+---------------------------------------------
Нужна помощь, пожалуйста, в настоящее время я могу получить одну запись, выполнив объединение
Spark.sql query sample for getting one record:
df1.createOrReplaceTempView('df1')
df2.createOrReplaceTempView('df2')
spark.sql("select a.zip_code,a.zone_code,b.territory_name,a.state from df1 a
left join df2 b on a.zip_code = b.zip_code where a.territory_name is null").createOrReplaceTempView('df2')
Спасибо