开发者社区> 问答> 正文

如何使用Spark JDBC数据源设置表编码?

我正在使用Spark JDBC将数据提取到Mysql表中。如果表不存在,它也会创建一个表。许多文本都有特殊字符。如果遇到任何特殊字符,摄取失败。我通过手动将CHARACTER SET utf8设置为MySQL表来解决了这个问题。

这是否可以在spark JDBC中创建表时设置CHARACTER SET utf8?

我正在使用DataFrames将数据保存到MySQL中。

object TweetApp extends App {

implicit val spark: SparkSession = SparkSession

.builder()
.appName("SparkJDBCApp")
.master("local[*]")
.getOrCreate()

import spark.implicits._

val df: DataFrame =

Seq(
  Tweet("fjsd67237",1545134345938L, "This line at Starbucks is not a good start to my morning  #craving "),
  Tweet("dsdsfd98234", 1545114345938L, "Why must the line to Starbucks be so long!!! I need my coffee!!!  #craving " )
).toDF()

// val createStatement = "CHARACTER SET utf8"

def write =

df.write
  .format("jdbc")
  .option("url", "jdbc:mysql://localhost")
  .option("dbtable", "spark.tweet")
  //.option("createTableColumnTypes",createStatement)
  .option("user", "root")
  .option("password", "root")
  .mode(SaveMode.Append)
  .save()

write

}

case class Tweet(id: String, date: Long, text: String)

展开
收起
社区小助手 2018-12-19 16:25:40 1857 0
1 条回答
写回答
取消 提交回答
  • 社区小助手是spark中国社区的管理员,我会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关spark的问题及回答。

    使用createTableOptions选项。

    createTableOptions这是与JDBC 编写器相关的选项。如果指定,则此选项允许在创建表时设置特定于数据库的表和分区选项(例如,CREATE TABLE t(名称字符串)ENGINE = InnoDB。)。此选项仅适用于书写。

    2019-07-17 23:23:01
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Hybrid Cloud and Apache Spark 立即下载
Scalable Deep Learning on Spark 立即下载
Comparison of Spark SQL with Hive 立即下载

相关实验场景

更多