我正在使用 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
?
谢谢