使用 pyspark 将数据插入 Mariadb 时出现 SQL 错误



我尝试使用 pyspark 和 jdbc 将数据插入 mariadb,但似乎 pyspark 没有生成正确的 SQL,我的 Spark 版本是 2.1.0,我没有这个问题利用集群管理器将 Spark 从 1.6.1 更新到 2.1.0,这是我的 python 代码

from pyspark.sql import Row, SparkSession as SS
if __name__ == "__main__":
    spark = SS.builder.appName("boot_count").getOrCreate()
    sc = spark.SparkContext
    l = [(str(20160101), str(1)]
    rdd = sc.parallelize(l)
    rdd = rdd.map(lambda x: Row(day=x[0], count=x[1]))
    df = spark.createDataFrame(rdd)
    df.createOrReplaceTempView("boot_count")
    mysql_url = "jdbc:mariadb://master.cluster:3306/dbname"
    properties = {'user': 'root', 'driver': 'org.mariadb.jdbc.Driver'}
    df.write.jdbc(url=mysql_url, table="boot_count", mode="append",
                  properties=properties)

这是我的错误信息

Caused by: java.sql.SQLSyntaxErrorException: (conn:364) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '"count","day") VALUES ('1','20160101')' at line 1 Query is : INSERT INTO boot_count ("count","day") VALUES ('1','20160101')

我在MariaDB中使用命令来解决此问题。

>set global sql_mode=ANSI_QUOTES

要么在列名周围加上反引号,要么使用允许在列名两边加上双引号的设置。

相关内容

  • 没有找到相关文章

最新更新