使用 PySpark 从 SQLite 解析日期时出错
Error parsing date from SQLite with PySpark
我正在尝试从 SQLite 数据库文件中读取一些 tables 以将它们与 PySpark 一起使用。我正在使用以下代码,它适用于不包含日期的 tables。
df = spark.read.format('jdbc') \
.options(driver='org.sqlite.JDBC', dbtable='table_name',
url='jdbc:sqlite:/path/to/database.db')\
.load()
df.createOrReplaceTempView("table_name")
spark.sql("select * from table_name").show(n=5)
df.printSchema()
//Exit
root
|-- id: integer (nullable = true)
|-- initial_date: date (nullable = true)
|-- final_date: date (nullable = true)
|-- ref_id: string (nullable = true)
当 table 包含日期时就会出现问题。尝试执行 spark.sql("select * from table_name").show(n=5)
时出现解析日期错误
原因:java.sql.SQLException:解析日期时出错
原因:java.text.ParseException:无法解析的日期:“2019-12-18”不匹配 (\p{Nd}++)\Q-\E(\p{Nd}++)\Q-\E(\p{Nd}++)\Q \E(\p{Nd}++)\Q:\E(\p{Nd}++ )\Q:\E(\p{Nd}++)\Q.\E(\p{Nd}++)
¿如何将日期解析为 PySpark 的有效格式?
最终有效的解决方案是使用选项 customSchema 将字段读取为字符串。
df = spark.read.format('jdbc') \
.options(driver='org.sqlite.JDBC', dbtable='table_name',
url='jdbc:sqlite:/path/to/database.db')\
.option("customSchema", "column1 STRING, column2 STRING")\
.load()
我正在尝试从 SQLite 数据库文件中读取一些 tables 以将它们与 PySpark 一起使用。我正在使用以下代码,它适用于不包含日期的 tables。
df = spark.read.format('jdbc') \
.options(driver='org.sqlite.JDBC', dbtable='table_name',
url='jdbc:sqlite:/path/to/database.db')\
.load()
df.createOrReplaceTempView("table_name")
spark.sql("select * from table_name").show(n=5)
df.printSchema()
//Exit
root
|-- id: integer (nullable = true)
|-- initial_date: date (nullable = true)
|-- final_date: date (nullable = true)
|-- ref_id: string (nullable = true)
当 table 包含日期时就会出现问题。尝试执行 spark.sql("select * from table_name").show(n=5)
原因:java.sql.SQLException:解析日期时出错
原因:java.text.ParseException:无法解析的日期:“2019-12-18”不匹配 (\p{Nd}++)\Q-\E(\p{Nd}++)\Q-\E(\p{Nd}++)\Q \E(\p{Nd}++)\Q:\E(\p{Nd}++ )\Q:\E(\p{Nd}++)\Q.\E(\p{Nd}++)
¿如何将日期解析为 PySpark 的有效格式?
最终有效的解决方案是使用选项 customSchema 将字段读取为字符串。
df = spark.read.format('jdbc') \
.options(driver='org.sqlite.JDBC', dbtable='table_name',
url='jdbc:sqlite:/path/to/database.db')\
.option("customSchema", "column1 STRING, column2 STRING")\
.load()