【问题标题】:Creating and Querying a Volatile table using Teradata JDBC in Spark using Scala使用 Scala 在 Spark 中使用 Teradata JDBC 创建和查询易失性表
【发布时间】:2016-04-25 08:22:38
【问题描述】:

在 Teradata 中查询易失性表时使用 Spark 1.5.1 时出现以下错误:

Exception in thread "main" java.sql.SQLException: [Teradata Database] [TeraJDBC 15.00.00.20] [Error 3707] [SQLState 42000] Syntax error, expected something like a name or a Unicode delimited identifier or '(' between the 'FROM' keyword and the 'CREATE' keyword.

这是我正在运行的生成上述错误的代码:

val url = "jdbc:teradata://FOO/, TMODE=TERA,TYPE=DEFAULT"
val properties = new java.util.Properties()
val driver = "com.teradata.jdbc.TeraDriver"
properties.setProperty("driver",driver)
properties.setProperty("username","USER")
properties.setProperty("password","PASSWORD")

var query =
f"""
  CREATE VOLATILE MULTISET TABLE tmp AS
      ( SELECT * FROM database.table )
      WITH DATA PRIMARY INDEX(CR_PLCY_ID) ON COMMIT PRESERVE ROWS;

  COMMIT;      

  SELECT * FROM tmp;
"""

var df = sqlContext.read.jdbc(url,query,properties)

旁注:我过度简化了原始查询,以测试通过 JDBC 查询的易失性表的功能。原始查询有多个易失性表。

任何帮助或建议将不胜感激。

【问题讨论】:

  • 我不知道到底发生了什么,但您不能使用FASTEXPORT 连接来创建易失性表。顺便说一句,您请求 SESSIONS=10 和一个 VT 是 session-local
  • 谢谢!我将从 FASTEXPORT 更改,看看我是否可以创建易失性表。
  • 当我将“TYPE=FASTEXPORT”更改为“TYPE=DEFAULT”并删除线程“main”java.sql.SQLException 中的“SESSIONS=10”异常时收到以下错误:[Teradata Database ] [TeraJDBC 15.00.00.20] [错误 3707] [SQLState 42000] 语法错误,应为名称或 Unicode 分隔标识符或“FROM”关键字和“CREATE”关键字之间的“(”。
  • 是同样的错误信息?我不能再帮你了,因为我不了解 Spark。它似乎只是将您的查询包装成其他东西,看起来像SELECT * FROM your_query。如果您有权访问 QueryLog,您可能会在 bc.QryLogV(或 QryLogSQL)中找到实际提交给 Teradata 的源。还有一个问题:你把 CREATE 和 SELECT 作为一个单独的请求提交,这是不允许的,CREATE 必须提交。
  • 除非您对上面的代码进行了过度简化,否则不需要 volatile 表。只需运行 SELECT * FROM {database}.{table}; 即可为您用于为 volatile 表播种的 FastExport。

标签: scala jdbc apache-spark teradata


【解决方案1】:

我不了解 Scala,也不了解 Spark,但查看 read.jdbc 方法 (Spark Javadoc) 的 Java 文档,它需要一个表名作为第二个参数。

因此,Spark 库正在执行某种“从(表参数值)中选择 *”,这证明了错误消息的合理性(正如 dnoeth 已经说过的)

【讨论】:

    猜你喜欢
    • 2013-11-29
    • 1970-01-01
    • 2019-10-08
    • 2016-07-27
    • 1970-01-01
    • 2016-01-18
    • 2020-12-10
    • 2018-09-14
    • 2013-06-11
    相关资源
    最近更新 更多