0

我正在使用 LakeFormation 和 Glue Jobs 来处理一些文件。

我已经配置了湖的形成。我运行了一个爬虫,可以正确识别这两个表和各自的模式。s3 存储桶中的文件夹结构如下:

| receitafederal-udct-zen

  |----empresas/

  |----estabelecimentos/

我在 Glue 中将数据库命名为“rf-raw”,爬虫识别出以下表格:

  • 企业
  • 企业经营者

但是,表格没有标题,并且数据类型被正确识别。所以,我想运行一个胶水作业来正确命名列并设置数据类型,以及其他简单的转换(一些替换)。然后,我想将转换后的文件存储在另一个 s3 存储桶中。但首先,我在 SageMaker 笔记本中测试了一些 PySpark(使用开发端点)。但是,当我运行以下脚本时:

glueContext = GlueContext(SparkContext.getOrCreate())
empresasDF = glueContext.create_dynamic_frame.from_catalog(database="raw-rf", table_name="empresas")
empresasDF.printSchema()

我收到以下错误:

Caused by: java.io.FileNotFoundException: No such file or directory 'glue-d-raw-rf-t- empresas-m-r://receitafederal-udct-zen/empresas/K3241.K03200Y1.D11009.EMPRECSV'

我已经尝试为创建笔记本的 SageMakerNotebook 角色设置 s3 存储桶的权限,但没有成功。我不知道,但错误消息中显示的文件/目录有点奇怪,但我不知道它是否是胶水模式。

此外,我在同一个 SageMaker 笔记本中运行了以下代码:

sp = SparkSession.builder.getOrCreate()

`

estabelecimentos_df = sp.read.option("delimiter",';')
.option("emptyValue", '""')
.option("dateFormat",'yyyyMMdd')
.option("encoding",'iso-8859-1')
.option('header', 'false')
.csv(path)

`

csv()路径中,我将 s3 文件路径设置为s3://bucket/key. 在这种情况下,当我运行时printSchema()没有返回错误,我可以访问文件。`

为什么 GlueContext 无法获取文件?但是在同一个笔记本中我可以使用SparkSession?

谢谢

4

0 回答 0