将Spark DataFrame写入Oracle时如何指定列数据类型

时间:2018-07-16 20:38:42

标签: apache-spark jdbc pyspark pyspark-sql

我想通过使用Oracle JDBC驱动程序将Spark DataFrame写入Oracle表。我的代码如下:

url = "jdbc:oracle:thin:@servername:sid"
mydf.write \
    .mode("overwrite") \
    .option("truncate", "true") \
    .format("jdbc") \
    .option("url", url) \
    .option("driver", "oracle.jdbc.OracleDriver") \
    .option("createTableColumnTypes", "desc clob, price double") \
    .option("user", "Steven") \
    .option("password", "123456") \
    .option("dbtable", "table1").save()

我想要的是将desc列指定为clob类型,将price列指定为double precision类型。但是Spark告诉我不支持Clob类型。 desc字符串的长度约为30K。我真的需要你的帮助。谢谢

2 个答案:

答案 0 :(得分:0)

根据此note,指定某些不支持的数据类型。如果目标表已经使用CLOB数据类型创建,则createTableColumnTypes可能是多余的。如果已经创建表,则可以使用spark jdbc检查是否可以写入CLOB列。

答案 1 :(得分:0)

使用所需的架构在mysql中创建表,现在使用mode ='append'并保存记录。

mode ='append'仅插入记录而不修改表模式。