2017-01-26 3 views
0

У меня есть 2 входных файлов:Объединение двух dataframes pyspark

а) исходный файл (orig_file.json), содержащие записи, как это:

{"id": 1, "app": test_a, "description": test_app_a } 
{"id": 2, "app": test_b, "description": test_app_b } 
{"id": 3, "app": test_c, "description": test_app_c } 
{"id": 4, "app": test_d, "description": test_app_d } 
{"id": 5, "app": test_e, "description": test_app_e } 

б) файл 'дельт' (deltas_file. JSON), содержащие записи, как это:

{"id": 1, "app": test_aaaxxx, "description": test_app_aaaxxx } 
{"id": 6, "app": test_ffffff, "description": test_app_ffffff } 

Я пытаюсь объединить два файла (оригинал + дельты) таким образом, что выход, как это приводит к

{"id": 1, "app": test_aaaxxx, "description": test_app_aaaxxx } 
{"id": 2, "app": test_b, "description": test_app_b } 
{"id": 3, "app": test_c, "description": test_app_c } 
{"id": 4, "app": test_d, "description": test_app_d } 
{"id": 5, "app": test_e, "description": test_app_e } 
{"id": 6, "app": test_ffffff, "description": test_app_ffffff } 

* в основном слияние исходного файла с файлом deltas путем добавления любого нового приложения и просто обновления записей для уже существующих. .

Я пытался использовать разные соединения, но не смог получить решение.

Может ли кто-нибудь помочь мне решить эту проблему? Thanks

ответ

0

левое внешнее соединение и сливаться:

from pyspark.sql.functions import * 


deltas.join(origin, ["id"], "leftouter") \ 
    .select("id", 
     coalesce(deltas["app"], origin["app"]).alias("app"), 
     coalesce(deltas["description"], origin["description"]).alias("description")) 
+0

, когда я запустить выше команду, он показывает ошибку, что объект dataframe не отозван. – user3313379

+0

Извините, неправильные скобки. – user7337271

-1

Попробуйте python panda merge.

import panda as pd 
# create your data frames here 
pd.merge(delta_frame,orig_frame) # Try various required arguments in function 

Надеюсь, что это поможет!

Смежные вопросы