2017-07-05 31 views
0

我想從每週公佈的csv文件更新我的數據庫。 到目前爲止,我已經設法將csv文件插入到我的數據庫中。Spark CSV:在不更改特定列的情況下將數據插入到現有表中

我的問題,我會再有兩個colums,我不想碰。一個來自另一個CSV文件,另一個來自Solr_query。

那麼我該如何忽略這兩列呢?

例(CSV文件):

FirstName;Lastname;City 
Peter;Johns;New York 

例(表1一個我):

FirsName-Lastname-City 

例(表2就是我想要)

FisrtName-Lastname-City-Age-SolrQuery 

我的代碼:

DataFrame DF = sqlContext 
         .read() 
         .format("csv") 
         .option("delimiter", ";") 
         .option("header", "true") 
         //mv .option("inferschema", "true") 
         .load("file:///home/2.csv"); 

query = "select firstname, lastname, city from mytable" 

DataFrame letsgo = sqlContext.sql(query); 

letsgo.write().mode(SaveMode.Append).saveAsTable("mytable"); 

它可以正常工作,當我有3列,但不是我我的表有5列 我該怎麼辦?

+0

試試這個letsgo.withColumn( 「時代」,點燃(空:字符串))。withColumn( 「solrquery」,點燃(空:字符串))寫()模式(SaveMode.Append).saveAsTable( 「mytable的」)。。 – morfious902002

+0

謝謝,但我不想觸摸Age和SolrQuery列。您的查詢更改Age和SolrQuery並將其更改爲空 – Jean

回答

0

與空值的附加列可以被包含在查詢:

query = "select firstname, lastname, city, null as Age, null as SolrQuery from mytable" 
+0

謝謝,但我不想觸摸Age和SolrQuery列。您的查詢更改Age和SolrQuery並將它們更改爲空 – Jean

+0

您的初始數據集沒有列「Age」和「SolrQuery」,查詢如何更改它們?猜測,你的想法是如何處理數據是錯誤的。 也許,在第一個登臺表中加載「2.csv」,在第二個表中加載「Age」和「SolrQuery」,然後通過查詢加入第一個和第二個表,並將結果存儲在「mytable」中。 – pasha701

相關問題