Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services Pyspark在多个列上使用AWS胶水连接创建副本_Amazon Web Services_Join_Amazon S3_Pyspark - Fatal编程技术网

Amazon web services Pyspark在多个列上使用AWS胶水连接创建副本

Amazon web services Pyspark在多个列上使用AWS胶水连接创建副本,amazon-web-services,join,amazon-s3,pyspark,Amazon Web Services,Join,Amazon S3,Pyspark,我在AWS Glue中有两个表,表_1和表_2,它们具有几乎相同的模式,但是,表_2有两个额外的列。我试图在相同的列上将这两个表连接在一起,并添加表2所独有的列,其中“旧”数据的值为空,其模式不包括这些值 目前,我可以使用类似于以下的方法连接两个表: joined_table = Join.apply(table_1, table_2, 'id', 'id') 其中,第一个“id”是表_1中的id列,第二个“id”是表_2中的id列。此调用成功地将该表合并为一个表,但是,生成的合并表具有匹配列

我在AWS Glue中有两个表,表_1和表_2,它们具有几乎相同的模式,但是,表_2有两个额外的列。我试图在相同的列上将这两个表连接在一起,并添加表2所独有的列,其中“旧”数据的值为空,其模式不包括这些值

目前,我可以使用类似于以下的方法连接两个表:

joined_table = Join.apply(table_1, table_2, 'id', 'id')
其中,第一个“id”是表_1中的id列,第二个“id”是表_2中的id列。此调用成功地将该表合并为一个表,但是,生成的合并表具有匹配列的重复字段

我的两个问题是:

  • 如何利用AWS Glue job和Pyspark连接两个表中匹配的所有列,以便在添加新字段时不存在重复的列
  • 这个示例调用只接受“id”列,因为我只是想让它正常工作,但是,我想传入两个表中匹配的所有列。如何将列列表传递到此Join.apply调用?我知道Pyspark直接提供的可用方法,但是,我想知道是否有一种特定于AWS Glue作业的方法,或者是否需要在AWS Glue中做一些事情来直接利用Pyspark功能

  • 我发现我需要重命名表_1中的列,然后在我的Join.apply调用后缺少对.drop_字段的调用,以从联接表中删除旧列

    此外,您可以传入列名列表,而不是我试图在问题中使用的单个“id”列

     joineddata = Join.apply(frame1 = table1, frame2 = table2, keys1 = ['id'], keys2 = ['id'], transformation_ctx = 'joinedData')
    
    aws胶水中的连接不处理重复项。您需要转换为数据帧,然后删除副本

    如果有重复项,请尝试以下操作:

    selectedFieldsDataFrame = joineddata.toDF()
    selectedFieldsDataFrame.dropDuplicates()