MySQL导入数据spark_如何使用Spark将数据插入RDB(MySQL)?

我正在尝试通过Spark SQL将数据插入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)

^

我的代码出了什么问题?

解决方法:

最后,我找到了解决方案.我可以使用技巧使用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]

)

标签:mysql,sql,scala,apache-spark,apache-spark-sql

来源: https://codeday.me/bug/20190702/1353690.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值