Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
Pyspark AWS Glue create_dynamic_frame from_catalog返回不在架构中的列_Pyspark_Aws Glue_Aws Glue Data Catalog - Fatal编程技术网

Pyspark AWS Glue create_dynamic_frame from_catalog返回不在架构中的列

Pyspark AWS Glue create_dynamic_frame from_catalog返回不在架构中的列,pyspark,aws-glue,aws-glue-data-catalog,Pyspark,Aws Glue,Aws Glue Data Catalog,嗨,从今天起我就有一个胶水的问题。我的数据结构是这样的 /年=2021/月=5/日=1/任务id=k2j34h5w4hrkj/type=meta/=>meta文件 /年=2021/月=5/日=1/任务id=k2j34h5w4hrkj/type=data/=>数据文件 我用一个胶水爬虫和一个排除模式成功地爬网了这两条路径,这样我就得到了一个元数据和一个数据表。模式看起来正是我想要的。当使用AWS提供的docker映像进行本地测试时,一切都正常,并且仍然工作良好。然而,在AWS中运行粘合作业时,我发

嗨,从今天起我就有一个胶水的问题。我的数据结构是这样的

/年=2021/月=5/日=1/任务id=k2j34h5w4hrkj/type=meta/=>meta文件 /年=2021/月=5/日=1/任务id=k2j34h5w4hrkj/type=data/=>数据文件

我用一个胶水爬虫和一个排除模式成功地爬网了这两条路径,这样我就得到了一个元数据和一个数据表。模式看起来正是我想要的。当使用AWS提供的docker映像进行本地测试时,一切都正常,并且仍然工作良好。然而,在AWS中运行粘合作业时,我发现两种模式是混合的

datasource0 = glueContext.create_dynamic_frame.from_catalog(
    database = "raw-db", 
    table_name = "ih_data", 
    transformation_ctx = "datasource0",
    push_down_predicate = "(year='2021' and month='5' and day='4' and task_id='604bb2cb198325001caf6198')",
)

datasource1 = glueContext.create_dynamic_frame.from_catalog(
    database = "raw-db", 
    table_name = "ih_meta", 
    transformation_ctx = "datasource1",    
    push_down_predicate = "(year='2021' and month='5' and day='4' and task_id='604bb2cb198325001caf6198')",
)


# transform to spark dataframes
data = datasource0.toDF()
meta = datasource1.toDF()
data.printSchema()
meta.printSchema()
data和meta都有相同的列,这是目录中两种模式的混合。我检查了底层文件,它们与我在目录中看到的内容以及从docker容器运行脚本时得到的内容相匹配。真正有关联的是,即使它使用相同的目录和相同的s3存储桶,它在本地执行时也能完美地运行。也许你们中的一个能给我指出正确的方向

谢谢

更新: 以下是模式的简化版本,我不会将其作为一个整体发布,因为它们非常广泛:

数据架构:

year: (string) Partition (0)
month: (string) Partition (1)
day: (string) Partition (2)
task_id: (string) Partition (3)
type: (string) Partition (4)
data_value_0: int
data_value_1: int
data_value_2: float
year: (string) Partition (0)
month: (string) Partition (1)
day: (string) Partition (2)
task_id: (string) Partition (3)
type: (string) Partition (4)
meta_value_0: int
meta_value_1: int
元模式:

year: (string) Partition (0)
month: (string) Partition (1)
day: (string) Partition (2)
task_id: (string) Partition (3)
type: (string) Partition (4)
data_value_0: int
data_value_1: int
data_value_2: float
year: (string) Partition (0)
month: (string) Partition (1)
day: (string) Partition (2)
task_id: (string) Partition (3)
type: (string) Partition (4)
meta_value_0: int
meta_value_1: int
这些也是我使用
glueContext.create\u dynamic\u frame.from\u catalog
在本地查询目录时看到的模式

但是,当我在AWS上运行脚本时,两者的模式如下所示:

year: (string) Partition (0)
month: (string) Partition (1)
day: (string) Partition (2)
task_id: (string) Partition (3)
type: (string) Partition (4)
data_value_0: int
data_value_1: int
data_value_2: float
meta_value_0: int
meta_value_1: int

我只是感到困惑,当地码头工人的形象表现非常不同。在AWS上,当我使用
下推\u谓词=“(type='data')”
作为快速修复时。

你能用预期模式和实际模式更新你的问题吗?