AWS Glue 中的 --extra-files 参数用于将需要在作业执行环境中使用的任何其他文件传输到该环境,但在某些情况下,该参数可能会未被识别。在这种情况下,您可以通过使用其他参数来替代 --extra-files 参数解决此问题。
例如,您可以使用 --extra-jars 参数将需要使用的其他 JAR 文件文件传输到执行环境中。以下是一个示例代码片段,其中使用了“--extra-jars”参数来传输需要在 Glue 作业中使用的其他 JAR 文件:
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
##Default Glue job template
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)
extraJars = ["s3://bucket-name/example.jar"]
sc._jsc.hadoopConfiguration().set("fs.s3a.experimental.input.fadvise","random")
sc._jsc.hadoopConfiguration().set("parquet.eager.row.page.enabled", "false")
sc._jsc.hadoopConfiguration().set("parquet.metadata.read.parallelism","16")
DataSource0 = glueContext.create_dynamic_frame.from_catalog(database = "database-name", table_name = "table-name", transformation_ctx = "DataSource0")
DataSink0 = glueContext.write_dynamic_frame.from_options(frame = DataSource0, connection_type = "s3", connection_options = {"path": "s3://bucket-name/folder-name"}, format = "parquet", transformation_ctx = "DataSink0", extra_jars=extraJars)
job.commit()
在上面的示例中,extraJars 列表包含需要在作业执行期间使用的其他 JAR 文件的路径。这些文件将被传输到执行环境中,以便 Spark