我正在尝试将一些原始 XML 文件从 azure blob 存储加载到增量表。
我已经安装了 blob 容器。
我的代码是:
CREATE TABLE bronze.my_xml_data;
COPY INTO bronze.my_xml_data
FROM 'dbfs:/mnt/my-container/data'
FILEFORMAT = XML
PATTERN = '*/some_dir/file_prefix_*.xml'
FORMAT_OPTIONS ('mergeSchema'='true', 'rowTag'='host', 'nullValue'='', 'valueTag'='val')
COPY_OPTIONS ('mergeSchema'='true')
我可以使用spark.read读取文件,所以我确信格式选项是正确的。
但是,我收到以下错误:
DeltaIllegalArgumentException: The format of the source files must be one of CSV, JSON, AVRO, ORC, PARQUET, TEXT, or BINARYFILE. Using COPY INTO on Delta tables as the source is not supported as duplicate data may be ingested after OPTIMIZE operations. This check can be turned off by running the SQL command `set spark.databricks.delta.copyInto.formatCheck.enabled = false`.
我尝试将此选项设置为 true,但随后出现另一个错误,即表没有列。
我做错了什么?
要将原始 XML 文件从 azure blob 存储加载到增量表,您可以使用以下代码。
%sql
CREATE TABLE temp_xml_data
USING xml
OPTIONS (
path "wasbs://[email protected]/sample.xml",
rowTag "book"
);
输出: