你好,
我試圖添加新的json文件到現有表定義在磚拚花。
使用一個數據集定義的這個命令(dataframe最初添加到臨時表):
val輸出= sql(“選擇標題。event_name to_date (from_unixtime (headers.received_timestamp)), dt, from_unixtime (headers.received_timestamp) login_datetime,頭。ip_address,頭。從usersloggedInRaw_tmp acting_user_id”)
我創建的初始表如下:
output.write.format(“鋪”).partitionBy (dt) .saveAsTable (“dev_sessions”)
這個表看起來像下麵的輸出:
如果我嚐試將一個新的json文件附加到現有的dev_session表,使用以下:
output.write.mode(“追加”).format(“鋪”).partitionBy (dt) .saveAsTable (“dev_sessions”)
這就是我所看到的:
數據似乎“轉變”。例如,現在acting_user_id值填充“dt”列,列添加命令中使用分區的數據。
我試過多次這個流,可以複製相同的結果。dataframe.write()中這是一個錯誤,還是我犯了一個錯誤?注意,附加表之前,我檢查磚的“輸出”dataframe通過顯示()命令沒有問題——他們預期的值列。隻有在使用寫命令添加到表中,這個問題似乎發生。
可以提供任何幫助,將真誠的感激。
謝謝你的回應。然而,我已經離開了這個方法,使重修改感興趣的筆記本我沒有看到的方式來定義一個特定的路徑與saveAsTable。我想它指向一個S3目錄我的選擇。因此我現在使用“sqlContext。warehouseDirectory createExternalTable(表)”與“sqlContext.refreshTable(表)”。通過這種方法,我不得到相同的問題。當添加新數據,沒有數據的“轉移”。
隻更新這個問題的最新更新。Omoshiroi說他找到了一個解決方案:
我已經離開了這個方法,使重修改感興趣的筆記本我沒有看到的方式來定義一個特定的路徑與saveAsTable。我想它指向一個S3目錄我的選擇。因此我現在使用“sqlContext。warehouseDirectory createExternalTable(表)”與“sqlContext.refreshTable(表)”。通過這種方法,我不得到相同的問題。當添加新數據,沒有數據的“轉移”。
如果有人遇到上麵的問題——讓我們知道,如果我們可以得到一個可靠的繁殖——我們想調試和解決這個問題。
我可以複製這個很簡單。
case類的東西(第一:字符串,第二:字符串)val df = sqlContext.createDataFrame (Seq(件事(“1”,“2”)))
df.write.format(“鋪”).mode (org.apache.spark.sql.SaveMode.Append) .partitionBy .saveAsTable(“第一”)(“示例”)df.write.format(“鋪”).mode (org.apache.spark.sql.SaveMode.Append) .partitionBy .saveAsTable(“第一”)(“示例”)
導致以下磁盤上:
-rw-r——r。211 10月30日11:37 dev dev _common_metadata drwxrwxr-x。2開發開發4096年10月30日11:37第一= drwxrwxr-x之一。2開發開發4096年10月30日11:37第一=兩個-rw-r——r。459 10月30日11:37 dev dev _metadata -rw-r——r。1開發dev 0 10月30日11:37 _SUCCES
試穿1.5.0和1.5.1