Добавить новые записи в существующую многораздельную таблицу кустов: PySpark - PullRequest
0 голосов
/ 30 января 2020
  1. У меня есть одна таблица кустов разделов с некоторыми записями. С столбцами (имя, город, пол, контактный номер) Столбец раздела (Load_Date)
  2. и один файл csv с некоторыми другими записями со столбцами (имя , City, Gender, ContactNumber, Load_Date)
  3. Теперь я хочу добавить новые записи из этого CSV в существующую таблицу кустов с некоторым условием - >> i. Если новая запись присутствует, добавьте ее непосредственно в таблицу кустов - >> ii. Если contactNumber не изменился, обновите эту запись и сохраните ее в улье.

'' 'Код, ниже которого я пробовал

    from pyspark.sql import SparkSession
    sparkHive=SparkSession.builder.enableHiveSupport().getOrCreate()
    //Reading Hive Table as Dataframe
    df=sparkHive.table("employee_details_p")   
    //Reading CSV for new records 
    df2=sparkHive.read.format("csv").load(filepath)
    df2.write.format("orc").saveAsTable("new_details")

   sparkHive.sql('''merge into employee_details_p
   using new_details on employee_details_p.Contact = 
   new_details.Contact
   when matched then update set
   Name=new_details.Name,
   City=new_details.City
   Gender=new_details.Gender
   when not matched then insert
   values(new_details.Name, new_details.City, 
   new_details.Gender,
   new_details.Contact, 
   new_details.Start_Date,new_details.End_Date,
   new_details.Load_Date)_''')

' '' 1. Пример части данных куста

Name,City,Gender,Contact,Load_Date
Rajesh,Pune,M,8585655456,2020-01-27        
Sandeep,Akola,M,9795969598,2020-01-27
Briana,Munster,F,9856321452,2020-01-27
Aniket,Lonavala,F,7502123321,2020-01-27

2.Новый файл CSV Данные, которые я хочу добавить с вышеупомянутым условием

Name,City,Gender,Contact,Load_Date
Rajesh,Mumbai,M,8585655456,2020-01-30
Ajikya,Nagpur,M,7896512568,2020-01-30

3. Ожидаемый вывод в виде следующих значений:

Name,City,Gender,Contact,Load_Date
Rajesh,Mumbai,M,8585655456,2020-01-30      -->Updated City from new entry(Contact is same)
Sandeep,Akola,M,9795969598,2020-01-27
Briana,Munster,F,9856321452,2020-01-27
Aniket,Lonavala,F,7502123321,2020-01-27
Ajikya,Nagpur,M,7896512568,2020-01-30    -->Complete New record Added directly

Ошибка ParseException: "\ nmismatched input 'merge' Ожидает {'(', 'SELECT', 'FROM', 'ADD', «DES C», «WITH», «VALUES», «CREATE», «TABLE», «INSERT», «DELETE», «DESCRIBE», «EXPLAIN», «SHOW», «USE», «DROP» 'ALT ER ',' MAP ',' SET ',' RESET ',' START ',' COMMIT ',' ROLLBACK ',' REDUCE ',' REFRE SH ',' CLEAR ',' CACHE ',' UNCACHE ', «DFS», «TRUNCATE», «ANALYZE», «LIST», «REVOKE», «GRANT», «LOCK», «UNLOCK», «MSCK», «EXPORT», «IMPORT», «LOAD»} (строка 1, pos 0) \ n \ n == SQL == \ n, погрузитесь в employee_details_p \ n ^^^ \ n, используя employee_details на employee_details_p.Contact == employee_details.Contact \ n при совпадении, затем обновите набор \ n Name = employee_details .Name, \ n Город = employee_details.City \ n Пол = employee_details.Gender \ n, если не соответствует, затем вставьте \ n значения (employee_details.Name, employee_details.City, employee_details.Gender, \ n employee_details.Contact, employee_details.Start_Date, employee_details.End_Date, employee_details.Load_Date) \ n \ n "

...