将 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
我有一个 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