我正在尝试通过MySQL
将数据插入Spark SQL
表。
这是我的表:
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)
^
我的代码出了什么问题?
答案 0 :(得分:2)
最后,我找到了解决方案。我可以使用技巧使用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]
)