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

Posted

技术标签:

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

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

【问题讨论】:

【参考方案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)

以上是关于调用 o79.getDynamicFrame 时出错。 [Amazon](500310) 无效操作:“s_next_of_kin”处或附近的语法错误的主要内容,如果未能解决你的问题,请参考以下文章

编译共享库时出现链接错误

Glue PySpark 作业:调用 o100.pyWriteDynamicFrame 时出错

使用重定向 I/O 与子进程通信时出现死锁

使用 GPU=1 编译 Yolo (Darknet) 时出现错误 127 -(obj/convolutioanl_kernels.o)

在 Visual Studio 2010 中构建任何 ffmpeg 项目时出现错误链接 2001 libavformat.a(tls_schannel.o)

数据库在进行CHECKDB时出现 SQL Server 检测到基于一致性的逻辑 I/O 错误