这是我的表:
CREATE TABLE images (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
data LONGBLOB NOT NULL
);
和我的Spark代码:
case class Image(name: String, data: Array[Byte])
def saveImage(image: Image): Unit = {
sqlContext.sql(s"""INSERT INTO images (name, data) VALUES ('${image.name}', ${image.data});""".stripMargin)
}
java.lang.RuntimeException: [1.13] failure: ``table'' expected but identifier images found
INSERT INTO images (name, data)
^
我的代码出了什么问题?
解决方法:
最后,我找到了解决方案.我可以使用技巧使用Spark sql将数据保存到MysqL中.诀窍是创建一个新的DataFrame,然后继续它.这是一个例子:
def saveImage(image: Image): Unit = {
val df = sqlContext.createDataFrame {
sc.parallelize(
Image(
name = image.name,
data = image.data
) :: Nil
)
}
JdbcUtils.saveTable(df, url, "images", props)
}
而模型将是这样的:
case class Image(
id : Option[Int] = None,
name : String,
data : Array[Byte]
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。