将 MySQL 更新语句转换为 Amazon Glue

Converting a MySQL Update Statement to Amazon Glue

我有一个 python 脚本,它使用 MySQL 从 CSV 文件中清除一些数据。我想将该脚本变成 Glue 可以使用的东西,但我不知道可以与 Glue 一起使用的 SQL 语法。

这是我需要修改的 python / mysql 脚本中的语句:

update_sql = """ UPDATE """ + my_table_name + """
        SET identity_LineItemId=NULLIF(identity_LineItemId, ''),
            identity_TimeInterval=NULLIF(identity_TimeInterval, ''),
            bill_InvoiceId=NULLIF(bill_InvoiceId, ''),
            bill_BillingEntity=NULLIF(bill_BillingEntity, ''),
            bill_BillType=NULLIF(bill_BillType, ''),
            Engagement=NULLIF(Engagement, '') ; """

另外,我如何 select 我的 Glue 脚本中的数据库?标准 SQL 有效吗?

任何关于如何将此更新语句从 MySQL 转换为 Glue 可以理解的 syntqax 的建议,我将不胜感激!我是 Glue 的新手。

这些是执行任务的一般步骤:

  • 在指向您的源 CSV 数据的粘合目录中创建一个 table。您可以使用 Athena 或 Glue Crawler 来完成此任务。
  • 使用上述 table 从 glue 目录
  • 在 glue 脚本中创建一个动态框架
  • 将动态帧转换为 spark 数据帧
  • 在 spark
  • 中将动态框架注册为临时内存 table
  • 执行所需的 SQL 查询以转换上面创建的临时数据 table
  • 将最终数据帧写回 S3

示例代码:

from pyspark.context import SparkContext
from awsglue.context import GlueContext
spark_session = glueContext.spark_session
sqlContext = SQLContext(spark_session.sparkContext, spark_session)
glueContext = GlueContext(SparkContext.getOrCreate())
dyF = glueContext.create_dynamic_frame.from_catalog(database='{{database}}', table_name='{{table_name}}'
df = dyF.toDF()
df.registerTempTable('{{name}}')
df = sqlContext.sql("{{sql_query_on_above_created_table}}")
df.format('parquet').save('{{s3_location}}')

Spark SQL nullif : https://spark.apache.org/docs/2.3.0/api/sql/index.html#nullif