问题标签 [aws-glue-spark]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
37 浏览

python-3.x - 为什么我找不到适用于 python 3 的 awsglue 包

Awsglue 包仍在使用 python 2.7,并且与 python 3 不兼容。如果我想在 python3 上使用 awsglue,我该怎么办?

0 投票
1 回答
336 浏览

scala - 使用 AWS Glue 连接到 Presto 数据库。无法通过 SSL 密钥库或证书

我在使用 AWS 粘合作业连接到 Presto 时遇到问题。代码是用 Spark Scala 编写的。我正在尝试使用以下代码连接到 Presto。

我收到以下错误

2020-12-18 20:36:52,376 错误 [main]glue.ProcessLauncher (Logging.scala:logError(70)):用户类中的异常:java.sql.SQLException:设置 SSL 时出错:s3:/test/presto_client .keystore (没有这样的文件或目录) io.prestosql.jdbc.PrestoDriverUri.setupClient(PrestoDriverUri.java:235) io.prestosql.jdbc.PrestoDriver.connect(PrestoDriver.java:88) org.apache.spark.sql.execution .datasources.jdbc.JdbcUtils$$anonfun$createConnectionFactory$1.apply(JdbcUtils.scala:63) org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$createConnectionFactory$1.apply(JdbcUtils.scala:54 ) org.apache.spark.sql.execution.datasources.jdbc.JDBCRDD$.resolveTable(JDBCRDD.scala:56) org.apache.spark.sql.execution.datasources.jdbc.JDBCRelation$.getSchema(JDBCRelation.scala:210 ) org.apache.spark.sql.execution.datasources.jdbc.JdbcRelationProvider。createRelation(JdbcRelationProvider.scala:35) org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:318) org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:223) org. apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:211) org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:167) sddsurwithDAXreporting$.main(sddsurwithDAXreportingPresto.scala:89) sddsurwithDAXreporting.main(sddsurwithDAXreportingPresto .scala) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.调用(Method.java:498)com.amazonaws.services.glue.SparkProcessLauncherPlugin$class.invoke(ProcessLauncher.scala:38)com。amazonaws.services.glue.ProcessLauncher$$anon$1.invoke(ProcessLauncher.scala:67) com.amazonaws.services.glue.ProcessLauncher.launch(ProcessLauncher.scala:108) com.amazonaws.services.glue.ProcessLauncher$.main (ProcessLauncher.scala:21) com.amazonaws.services.glue.ProcessLauncher.main(ProcessLauncher.scala)

我尝试通过 pem 证书,但仍然失败并出现相同的错误。我已经检查了所有的许可。我有一个从同一个文件夹访问的 jar 文件,我可以访问它。当我使用 Eclipse 从我的机器上运行相同的代码时,它运行良好。有人可以帮忙吗?我对 scala 相当陌生,这是我第一次尝试使用 SSL 证书连接到数据库。

0 投票
1 回答
858 浏览

pyspark - AWS Glue 将列选择解析为数组或结构

关于如何解决以下问题的想法用完了。Glue 数据目录中的表具有以下架构:

如果我尝试ref使用

我丢失了记录。

关于我如何做的任何想法:

  1. 过滤 DataFrame 是否_field.refarraystruct
  2. struct记录转换为array或反之亦然
0 投票
0 回答
33 浏览

aws-glue - 如何创建嵌套的 CASE 或 IF 以更改列中的数据值

我需要从 aws 胶水的列中更新数据值,我正在寻找类似 CASE 语句或 IF ELSE 嵌套的内容。

例子:

谢谢阅读 :)

0 投票
1 回答
1853 浏览

amazon-web-services - 如何配置 Spark / Glue 以避免在 Glue 作业成功执行后创建空的 $_folder_$

我有一个简单的胶水 etl 作业,由胶水工作流程触发。它从爬虫表中删除重复数据并将结果写回 S3 存储桶。作业成功完成。但是,spark 生成“$文件夹$”的空文件夹仍保留在 s3 中。它在层次结构中看起来不太好,并导致混乱。成功完成作业后,有什么方法可以配置火花或胶水上下文以隐藏/删除这些文件夹?

在此处输入图像描述

---------------------S3 映像 --------------------- 在此处输入图像描述

0 投票
1 回答
264 浏览

pyspark - 是否可以将每个 aws 胶水动态记录写入不同的 s3 路径

我是新的 AWS 胶水。我需要将动态框架中的每条记录写入 s3 中的自定义文件夹路径。例如


以下是目标 s3 路径:

在这里,'year', 'month', 'day', 'somegroupid'可作为每条记录中的列使用。

是否可以使用记录中的列值来决定 JSON 文件的写入路径?

0 投票
1 回答
427 浏览

apache-spark - 是否有更系统的方法来解决缓慢的 AWS Glue + PySpark 执行阶段?

我有这个代码片段,我仅使用 100 条记录以独立模式在本地运行:

该模式包含 89 列,所有列都具有字符串数据类型,但 5 列具有结构数据类型的数组。数据大小为 3.1 MB。

此外,以下是有关用于运行代码的环境的一些信息:

  • spark.executor.cores:2
  • spark.executor.id:驱动程序
  • spark.driver.memory:1000M

问题是我不知道为什么第 1 阶段需要 12 分钟才能完成,而它只需要计算 100 条记录。我找不到“扫描镶木地板”和“交换”任务的含义,如图所示: Stage 1 DAG Visualization

我的问题是,是否有更系统的方法来理解这些任务的含义。作为初学者,我非常依赖 Spark UI,但它并没有提供太多关于它已执行的任务的信息。我能够找到哪个任务花费的时间最多,但我不知道为什么会这样以及如何系统地解决它。

0 投票
1 回答
265 浏览

apache-spark-sql - 有没有办法知道 S3 表中写入的最后一个分区是什么,用于 AWS Glue 作业中的下推谓词?

我试图从使用下推谓词读取动态帧的胶水作业中读取写入 S3 表中的最后一个分区。

我要读取的表每天都会加载,因此会为该每日数据创建一个新分区。

我有另一个 Glue 作业将从该表中读取,但我只想读取最后一个分区中写入的最后一个数据。我不想阅读整个表格然后获取最新数据(大数据量、低效率、成本......),因为我可以使用下推谓词。问题是,最后一个分区的值每天都在变化。

我尝试使用 boto3 列出 S3 中的对象,并使用 get_partitions 函数检索值,我知道我可以在 Athena 中查询:

但是有没有更简单的方法可以在胶水作业中实现这一点?

谢谢

0 投票
1 回答
1224 浏览

amazon-web-services - AWS Glue ETL 作业的 Scala 和 Java 版本是什么?

到目前为止,我正在使用带有 Java 8 的 scala 2.11 来构建 Glue ETL 作业使用的库。我们计划使用 Java 11 升级到 Scala 2.12,但不确定 Glue ETL 是否支持它们。

0 投票
0 回答
46 浏览

oracle - 当我们使用 from_options aws 胶水时,hashpartitions 和 no of worker 之间有什么关系?

我使用以下代码创建了粘合作业以从 oracle 读取数据。

如果我使用查询选项,则需要 8 小时,如果我不执行查询,则需要 45 分钟,查询选项是否正确?

我的数据大小是 318049228,我使用的是 Worker 类型:G1.X 和工人数量:100 和“hashpartitions”:'100' 它需要 45 分钟,hashpartitions 和工人数量之间的关系是什么?