调用 o79.getDynamicFrame 时出错 [Amazon](500310) 无效操作:“s_next_of_kin”处或附近的语法错误

问题描述

我在 redshift 中有一个表,其中有一个列名 -->( agent's_next_of_kin) 如果你看到它的名字中有一个撇号 现在,当我用胶水将它读入我的 DynamicFrame 时,它​​给了我上面说语法问题的错误。 我怎样才能让它工作并解决这个问题,我需要更改列名吗?或者是否有任何解决方法,我也尝试删除该列,但在将其读入 datasource0 时甚至删除显示错误之前,它似乎没有到达那里。请帮忙解决问题

解决方法

尝试使用 spark 本机数据帧而不是动态数据帧读取数据。 当我的列名中有空格时,我遇到了这个问题。在使用 selectExpr 函数解决此问题时,我已将列名放在反勾号 `` 内。

使用 spark 读取 redshift:

val jdbcURL = "jdbc:redshift://test-redshift.czac2vcs84ci.us-east-.redshift.amazonaws.com:5439/testredshift?user=redshift&password=W9P3GC42GJYFpGxBitxPszAc8iZFW"
val tempS3Dir = "s3n://spark-redshift-testing/temp/"
val salesDF = sqlContext.read
    .format("com.databricks.spark.redshift")
    .option("url",jdbcURL) //Provide the JDBC URL
    .option("tempdir",tempS3Dir) //User provides a temporary S3 folder
    .option("dbtable","sales") //or use .option("query","select * from sales") 
    .load()