我们在S3存储桶(CSV)中有数据(表),需要应用连接转换并将结果存储在S3中。 表的连接成功但是S3中生成的列列表是混乱的,订单不在输出文件中维护。 输出文件还包含额外的引号(“)和点(。)
仅应用Mappings时,顺序不会改变,在没有Jumbling的情况下产生正确的输出。
脚本在python或Scala中。
脚本:
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
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)
datasource0 = glueContext.create_dynamic_frame.from_catalog(database = "testdb", table_name = "table1", transformation_ctx = "datasource0")
datasource1 = glueContext.create_dynamic_frame.from_catalog(database = "testdb", table_name = "reftable", transformation_ctx = "datasource1")
datasource2 =datasource1.join(["aaaaaaaaaid"],["aaaaaaaaaid"],datasource0,transformation_ctx="join")
datasink2 = glueContext.write_dynamic_frame.from_options(frame = datasource2, connection_type = "s3", connection_options = {"path": "s3://testing/Output"}, format = "csv", transformation_ctx = "datasink2")
job.commit()
需要帮助!!!
答案 0 :(得分:0)
你可以试试这个:
datasource2 = Join.apply(datasource0, datasource1, 'aaaaaaaaaid', 'aaaaaaaaaid')
这应该有效。让我知道,如果这有助于解决问题,也请接受/赞成答案。
此致
YUVA
答案 1 :(得分:0)