You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Spark SQL利用JDBC数据源创建PARQUET格式表

问题分析与解决方案

错误原因

你的SQL语句存在两处核心语法问题:

  1. CREATE TABLE LIKE与USING JDBC语法冲突:LIKE用于复制已有表的结构和元数据,而USING用于指定表的数据源/存储类型,Spark SQL不支持将两者直接组合使用。
  2. STORED AS与USING互斥:这两个关键字都是用来指定表的存储格式,不能同时出现在同一条CREATE TABLE语句中。

正确实现方式

方式一:先复制结构创建Parquet空表,再导入JDBC数据

适合需要完整复制原表元数据(如字段注释、约束)的场景:

  1. 创建与原表结构一致的Parquet格式空表:
CREATE TABLE `PARQUET_MY_TABLE`
LIKE `MY_TABLE`
STORED AS PARQUET;
  1. 从JDBC数据源读取数据并插入到新表:
INSERT INTO `PARQUET_MY_TABLE`
SELECT * FROM JDBC.`OPTIONS`(
  url "jdbc:mysql://XX.XX.XX.XX:3306/test?useSSL=FALSE&nullCatalogMeansCurrent=true&zeroDateTimeBehavior=convertToNull",
  driver "com.mysql.cj.jdbc.Driver",
  dbtable "MY_TABLE",
  user "username",
  password "password"
);

方式二:用CTAS语句一步创建并导入数据

适合只需要复制字段结构和数据的场景(不会复制原表注释、约束等元数据):

CREATE TABLE `PARQUET_MY_TABLE`
STORED AS PARQUET
AS
SELECT * FROM JDBC.`OPTIONS`(
  url "jdbc:mysql://XX.XX.XX.XX:3306/test?useSSL=FALSE&nullCatalogMeansCurrent=true&zeroDateTimeBehavior=convertToNull",
  driver "com.mysql.cj.jdbc.Driver",
  dbtable "MY_TABLE",
  user "username",
  password "password"
);

内容的提问来源于stack exchange,提问作者Luis Estrada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 21:40:47