我正在使用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)
使用createTableOptions选项。
createTableOptions这是与JDBC 编写器相关的选项。如果指定,则此选项允许在创建表时设置特定于数据库的表和分区选项(例如,CREATE TABLE t(名称字符串)ENGINE = InnoDB。)。此选项仅适用于书写。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。