Spark无法解析MySQL文本列

时间:2017-04-13 01:03:37

标签: mysql apache-spark

Spark无法从MySQL数据库中正确解析TEXT列。 TEXT字段包含长条目,包括换行符和引号。

我最初在使用.csv格式读取文件时遇到问题(同样,尽管尝试了libParser的各种选项,但Spark没有正确解析多行条目),因此我将其上传到MySQL中为了更清楚地阅读Spark。

正如您在下面的错误中看到的那样,long TEXT列中的字符序列可能导致Spark无意中将条目拆分为多个列,这导致文本被放置在{{1}类型的字段中}。

有关如何避免此问题的任何建议吗?

MySQL Read

java.sql.TimeStamp

错误

val notesDF = spark.read.format("jdbc")
    .option("url", jdbcUrl)
    .option("driver", jdbcDriver)
    .option("dbtable", "noteevents")
    .option("user", "root")
    .option("password", "password")
    .load()

1 个答案:

答案 0 :(得分:0)

好吧,正如Pushkar指出的那样,解决问题的方法是预处理数据。为了防止其他人在Spark .csv处理大文本字段时遇到类似的问题,这就是我所做的:

  1. .csv加载到MySQL中。
  2. 删除所有换行符/非ascii字符。 update tablename set columnname = REPLACE(CONVERT(columnname USING ascii), '?', '');
  3. 将表格(包括列名称)导出到.csv并使用格式正确的文件。