【问题标题】:An error occurred while calling o79.getDynamicFrame. [Amazon](500310) Invalid operation: syntax error at or near "s_next_of_kin"调用 o79.getDynamicFrame 时出错。 [Amazon](500310) 无效操作:“s_next_of_kin”处或附近的语法错误
【发布时间】:2021-07-28 19:53:43
【问题描述】:

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

【问题讨论】:

    标签: pyspark apache-spark-sql aws-glue aws-glue-data-catalog aws-glue-spark


    【解决方案1】:

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

    使用火花从红移读取:

    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()
    

    【讨论】:

    • 如何导入jar?从外部库路径?如果我将 jar 的路径提供给我的本地目录,我该如何在胶水作业中提及它
    • 我猜应该是 import from 之类的,能否请您提供正确的导入方式以便在我的胶水作业中提及它
    • 上传 s3 存储桶中的 jar,然后您可以在安全配置下的“依赖 jars 路径”选项中传递该 s3 路径。
    • 好的,让我试试,谢谢,你知道如何使用我想导入到胶水作业中的 UDF 函数吗?所以我有一个 UDF,它添加了两个数字,我如何在工作中使用它。所以一个 python 程序 def Addnum(list): print (a+b) 现在我想在 pyspark 胶水作业中使用它我会将它上传到 s3 然后在安全配置下导入然后下一步我很困惑。我从 addNum 导入写*或类似的东西?请帮忙
    • 创建一个 py 文件,其中包含您的 UDF 示例“myUdf”。然后将文件上传到 s3 并将路径的 s3 位置传递给安全配置下的“Python 库路径”选项。然后,您可以简单地添加“import myUdf”并在粘合作业中调用该函数,如下所示: import myUdf next line df = myUdf.myFunction(param1, param2)
    猜你喜欢
    • 1970-01-01
    • 2017-12-11
    • 1970-01-01
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-20
    • 2018-01-26
    相关资源
    最近更新 更多