我有一个在架构中使用inet
类型的postgres数据库(9.2)。我试图用Spark(1.6)写到postgres。
df.write.mode(mode).jdbc(db, table, props)
我将架构应用于df with;
context.createDataFrame(rdd, schema())
并且由于架构不匹配而导致SPARK-13286中描述的所有BatchUpdateException错误。模式是StructField的StructType,需要Spark Sql DataType。有没有办法使这个工作与任何现有的Spark Sql数据类型一起使用?
答案 0 :(得分:1)
为什么Spark Sql会排除Inet数据类型?
实际上,Spark不支持所有不同JDBC源(不仅仅是RDBMS)使用的自定义类型。
如何使用任何现有的Spark Sql数据类型?
您可以使用查询转换为Spark可以使用的类型(未经测试):
spark.read.jdbc(url, "(SELECT CAST(inet_col AS TEXT) FROM table) AS t")