取消
顯示的結果
而不是尋找
你的意思是:

AnalysisException:當試圖拯救一個火花DataFrameδ表

kll”id=
新的貢獻者三世

我得到一個,

“AnalysisException未能LongType和StringType合並不兼容的數據類型

當試圖運行以下命令,

“df格式(δ)saveAsTable(”模式.k_adhoc.df,模式=覆蓋)”

我保存前鑄造列:

' ' '

#鑄造數據類型

df = df.withColumn ( “h_id” ,df4 [ “h_id” ].cast (StringType ()))
df.show ()
' ' '

“df”dataframe的模式是:

' ' '

| - - - id:字符串(nullable = false)

|——年:整數(nullable = true)

|——月:整數(nullable = true)

|——month_year:字符串(nullable = true)

|——mm-yyyy:日期(可空= true)

|——h_id:字符串(nullable = true)

' ' '

' ' '

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -AnalysisException回溯(最近調用最後)文件<命令- 3186243284832184>:21#保存表- - - - - > 2df格式(δ)saveAsTable(”模式.k_adhoc.df,模式=覆蓋)文件/磚/火花/ python / pyspark / instrumentation_utils.py: 48,在_wrap_function。<當地人> .wrapper(* * kwargs * args)46開始=時間perf_counter ()47試一試:推薦- - - - - - > 48res=函數(*arg遊戲,**kwargs)49日誌記錄器log_success (50module_name、class_name function_name、時間perf_counter ()- - - - - -首先,簽名51)52返回res文件/磚/火花/ python / pyspark / sql / readwriter.py: 1520,在DataFrameWriter.saveAsTable(自我、名稱、格式、模式、partitionBy、* *選項)1518年如果格式沒有一個:1519年自我格式(格式)- > 1520自我_jwritesaveAsTable(的名字)文件/磚/火花/ python / lib / py4j-0.10.9.5-src.zip / py4j / java_gateway.py: 1321,在JavaMember.__call__(自我,* args)1315年命令=原型CALL_COMMAND_NAME+\1316年自我command_header+\1317年args_command+\1318年原型END_COMMAND_PART1320年回答=自我gateway_clientsend_command(命令)- > 1321return_value=get_return_value(1322年回答,自我gateway_client,自我target_id,自我的名字)1324年temp_argtemp_args:1325年temp_arg_detach()文件/磚/火花/ python / pyspark /錯誤/ exceptions.py: 234,在capture_sql_exception。<當地人> .deco(*,* *千瓦)230年轉換=convert_exception (ejava_exception)231年如果isinstance(轉換,UnknownException):232年#隱藏除了來自哪裏顯示non-Pythonic233年# JVM異常消息。- - > 234提高轉換沒有一個235年其他的:236年提高AnalysisException:失敗的合並字段“h_id”和“h_id”。未能LongType和StringType合並不兼容的數據類型

' ' '

5回複5

Priyanka_Biswas”id=
新的貢獻者三世”id=
新的貢獻者三世

@kll

T他的錯誤是由於模式驗證。每一列的三角洲表執行模式驗證,和源dataframe列數據類型必須匹配目標表的列數據類型。如果它們不匹配,會拋出一個異常。

供參考,

https://docs.m.eheci.com/delta/delta-batch.html schema-validation-1


請參考下麵的2篇文章,看看是否對你有幫助嗎?
  1. https://community.m.eheci.com/s/question/0D58Y00008k0YO8SAM/failed-to-merge-incompatible-data-typ..。
  2. https://kb.m.eheci.com/en_US/data/wrong-schema-in-files

ajaypanday6781”id=
尊敬的貢獻者二世

@kll

首先,把表和刪除底層文件通過dbutils.fs.rm(“路徑”),然後嚐試運行寫命令就會工作。

Vidula_Khanna”id=
主持人”id=
主持人

@kll

希望一切進行得很順利。

隻是想檢查如果你能解決你的問題。如果是的,你會很高興的答案標記為最好,其他成員可以找到解決方案更快嗎?如果不是,請告訴我們,我們可以幫助你。

幹杯!

夢想”id=
新的貢獻者三世

使用覆蓋模式選擇:

(df。寫.mode(覆蓋).format(δ).option (“overwriteSchema”,“真正的”).saveAsTable (schema.k_adhoc.df))

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map