现在我正在使用Spark连接我的oracle数据库。但是,有一个名为“带有时区的时间戳”的列类型,它是Oracle中的一个特定列。当我从包含此类型列的表中加载数据时,它将引发一个错误"java.sql.SQLException:不支持的类型-101“。
有人知道如何从表中加载特定的列吗?然后,我可以避免选择“带有时区的时间戳”列。如果有人能找出"java.sql.SQLException:不受支持的类型-101“错误会更好。但我觉得这可能是星火的臭虫。
我的代码如下,非常感谢。
spark = SparkSession\
.builder\
.appName("TestSQL")\
.getOrCreate()
orc = spark.read \
.format("jdbc") \
.option("url", "jdbc:oracle:thin:xxx/xxx@IP:1521/database") \
.option("dbtable", "xxx.xxx") \
.load() 发布于 2016-10-04 03:41:26
在options中,您可以传递sql query in dbtable密钥。在sql查询中,可以选择所需的列。
例如:
final String dbTable =
"(select emp_no, concat_ws(' ', first_name, last_name) as full_name from employees) as employees_name";
Dataset<Row> jdbcDF =
sparkSession.read().jdbc(CONNECTION_URL, dbTable, "emp_no", 10001, 499999, 10, connectionProperties);*代码在java中
来源:使用Spark2.0数据源API加载数据库数据
发布于 2016-10-04 04:53:14
另一种方法可以是在Oracle上创建视图,这样您就可以在DB本身中处理Oracle特定的数据类型。
https://stackoverflow.com/questions/39843525
复制相似问题