如何使用Spark将数据插入RDB(MySQL)中?
我正试图通过如何使用Spark将数据插入RDB(MySQL)中?,mysql,sql,scala,apache-spark,apache-spark-sql,Mysql,Sql,Scala,Apache Spark,Apache Spark Sql,我正试图通过sparksql将数据插入MySQL表中 这是我的桌子: 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
sparksql
将数据插入MySQL
表中
这是我的桌子:
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)
^
我的代码出了什么问题?最后,我找到了一个解决方案。我可以使用sparksql将数据保存到MySQL中。诀窍是创建一个新的数据帧,然后将其持久化。以下是一个例子:
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]
)
尝试将`添加到您的列名中`图像`