我使用如下所示的视觉选项卡创建了一个粘合作业。首先,我连接到一个 mysql 表作为数据源,该表已经在我的数据目录中。然后在转换节点中,我编写了一个自定义 SQL 查询以仅从源表中选择一列。通过数据预览功能进行验证,转换节点工作正常。现在我想将数据写入只有一列“字符串”数据类型的现有数据库表。粘合作业成功,但我没有看到表中的数据。
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
from awsglue import DynamicFrame
def sparkSqlQuery(glueContext, query, mapping, transformation_ctx) -> DynamicFrame:
for alias, frame in mapping.items():
frame.toDF().createOrReplaceTempView(alias)
result = spark.sql(query)
return DynamicFrame.fromDF(result, glueContext, transformation_ctx)
args = getResolvedOptions(sys.argv, ["JOB_NAME"])
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args["JOB_NAME"], args)
# Script generated for node MySQL …Run Code Online (Sandbox Code Playgroud) mysql amazon-web-services amazon-aurora aws-glue aws-glue-data-catalog
我有一个简单的sql语句如下
情况1:
select 1 as a
union
select 2 as a
Run Code Online (Sandbox Code Playgroud)
输出:此案例按预期工作
案例2:
select 1 as a
union
select 2 as b
Run Code Online (Sandbox Code Playgroud)
输出:虽然我的第二个选择中的别名是“b”,但它仍然显示别名“a”。
为什么它不能从第二个 select 语句中获取别名?
我们如何让 sql 从第二个 select 查询中选择别名?
案例3:
select 1
union
select 2 as b
Run Code Online (Sandbox Code Playgroud)
输出:即使我上面的第一个 select 语句没有任何别名,但第二个 select 语句仍然有,为什么结果仍然显示“无列名”?