我用δ生活表加載一組csv文件目錄。我是根據每個模式推理的模式,以避免問題。這與常規三角洲表自動裝卸機,但沒有三角洲生活表。下麵是我使用的一個示例代碼定義的模式和負載DLT:
#定義模式模式= StructType ([StructField (“ID”, StringType(),真的,{“評論”:“獨特的客戶ID”}), StructField(“測試”,StringType(),真的,{“評論”:“這是一個測試”}),…)]# Define三角洲表@dlt生活。表(name = " test_bronze "評論=”從S3原始測試數據逐步吸收著陸區”,table_properties ={“質量”:“青銅”},模式=)#讀流def rafode_bronze():返回(火花。readStream .format .option (“cloudFiles (“cloudFiles”)。形式at", source_format) # format is csv .option("inferSchema", "False") .option("header", "True") .schema(schema) .load(data_source) # data_source is S3 directory )
當嚐試運行這個三角洲住表管道,我得到一個錯誤:
org.apache.spark.sql。AnalysisException:未能合並字段“測試”和“試驗。未能IntegerType和倍增式合並不兼容的數據類型
我嚐試運行readStream有或沒有”。選項(“inferSchema”,“假”)“是否允許使用預定義的模式和一個線性模式,但我遇到同樣的錯誤。似乎火花。readStream使用預定義的模式並不是每個讀csv文件的目錄,導致模式差異和加載失敗。我需要改變我的readStream代碼強製的使用模式或我丟失的東西嗎?