0

我正在使用 Spark 读取 Teradata 表。这是我的代码:

spark.read.format("jdbc")
      .option("url", "jdbc:teradata://127.0.0.1/database=test, TMODE=TERA")
      .option("username", "test")
      .option("password", "test")
      .option("dbtable", "(SELECT TOP 5 * FROM test.users) AS tmp")
      .option("driver", "com.teradata.jdbc.TeraDriver")      
      .load().show()

我得到这个错误:

Caused by: java.sql.SQLException: [Teradata Database] [TeraJDBC 16.20.00.08] [Error 5628] [SQLState HY000] Column Login Date not found in tmp.
    at com.teradata.jdbc.jdbc_4.util.ErrorFactory.makeDatabaseSQLException(ErrorFactory.java:309)
    at com.teradata.jdbc.jdbc_4.statemachine.ReceiveInitSubState.action(ReceiveInitSubState.java:103)
    at com.teradata.jdbc.jdbc_4.statemachine.StatementReceiveState.subStateMachine(StatementReceiveState.java:311)

但是,我可以从 Teradata 表中看到所有需要的列:

spark.read.format("jdbc")
      .option("url", "jdbc:teradata://127.0.0.1/database=test, TMODE=TERA")
      .option("username", "test")
      .option("password", "test")
      .option("dbtable", "(SELECT * FROM dbc.columnsV WHERE databasename = 'test' AND tablename = 'users') tmp")
      .option("driver", "com.teradata.jdbc.TeraDriver")
      .load().show()

输出:

+-------------------+-------------------------+----------------------+------------+---------------------------------+---------------+----------+-------------+------------+------------+--------+-------------+------------------+...
|DatabaseName       |TableName                |ColumnName            |ColumnFormat|ColumnTitle                      |SPParameterType|ColumnType|ColumnUDTName|ColumnLength|DefaultValue|Nullable|CommentString|DecimalTotalDigits|...
+-------------------+-------------------------+----------------------+------------+---------------------------------+---------------+----------+-------------+------------+------------+--------+-------------+------------------+...
|test               |users                    |active_flag           |-(18)9      |Is User Active                   |               |D         |null         |8           |null        |Y       |null         |18                |...
|test               |users                    |user_id               |-(18)9      |User Identifier                  |               |D         |null         |8           |null        |Y       |null         |18                |....
|test               |users                    |login_date            |yyyy-mm-dd  |Login Date                       |               |DA        |null         |4           |null        |Y       |null         |null              |....
+-------------------+-------------------------+----------------------+------------+---------------------------------+---------------+----------+-------------+------------+------------+--------+-------------+------------------+....

为什么 Spark 无法读取表格以及为什么无法获取列的任何想法?

4

0 回答 0