我創建了一個三角洲表通過一個集群dbfs位置。
模式:
創建外部表tmp_db.delta_data (
delta_id int,
delta_name varchar (20),
delta_variation小數(10、4),
delta_incoming_timestamp時間戳,
delta_date生成日期總是(cast(分裂((delta_incoming_timestamp字符串),' ')[0]日期))評論“生成”,——cound使用日期(col)
delta_time生成字符串總是(cast(分裂(鑄造(分裂((delta_incoming_timestamp字符串),' ')[1]作為字符串),“\ \”。)[0]字符串))評論“生成”,
delta_milliseconds生成字符串總是(cast(分裂(鑄造(分裂((delta_incoming_timestamp字符串),' ')[1]作為字符串),“\ \”。)[1]作為字符串))評論“生成”
)
使用δ
分區通過(delta_date)
位置的dbfs: / tmp / tables_base / tmp_db delta_data”;
首次創建。我幾行插入表中。
我把表,因為它是一個外部表並創建表在另一個磚集群。我得到以下錯誤。
' ' '
= = = =指定
根
——delta_id:整數(nullable = true)
——delta_name: varchar(20)(可空= true)
——delta_variation:小數(10,4)(可空= true)
——delta_incoming_timestamp:時間戳(nullable = true)
——delta_date:日期(可空= true)
——delta_time:字符串(nullable = true)
——delta_milliseconds:字符串(nullable = true)
現有= = = =
根
——delta_id:整數(nullable = true)
——delta_name:字符串(nullable = true)
——delta_variation:小數(10,4)(可空= true)
——delta_incoming_timestamp:時間戳(nullable = true)
——delta_date:日期(可空= true)
——delta_time:字符串(nullable = true)
——delta_milliseconds:字符串(nullable = true)
= = = =的差異
——指定的元數據字段delta_name不同於現有的模式:
指定:{}
現有:{“__CHAR_VARCHAR_TYPE_STRING”:“varchar (20)}
——指定類型delta_name不同於現有模式:
指定:varchar (20)
現有:字符串
' ' '
我不明白為什麼這個元數據添加到一個varchar列,為什麼varchar列保存為字符串。如果它是一種違約行為,我怎麼能指定配置{:“__CHAR_VARCHAR_TYPE_STRING varchar (20)“}特定列?