Spark无法从MySQL数据库中正确解析TEXT列。 TEXT字段包含长条目,包括换行符和引号。
我最初在使用.csv
格式读取文件时遇到问题(同样,尽管尝试了libParser
的各种选项,但Spark没有正确解析多行条目),因此我将其上传到MySQL中为了更清楚地阅读Spark。
正如您在下面的错误中看到的那样,long TEXT列中的字符序列可能导致Spark无意中将条目拆分为多个列,这导致文本被放置在{{1}类型的字段中}。
有关如何避免此问题的任何建议吗?
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()
答案 0 :(得分:0)
好吧,正如Pushkar指出的那样,解决问题的方法是预处理数据。为了防止其他人在Spark .csv
处理大文本字段时遇到类似的问题,这就是我所做的:
.csv
加载到MySQL中。update tablename set columnname = REPLACE(CONVERT(columnname USING ascii), '?', '');
.csv
并使用格式正确的文件。