问题标签 [aws-glue-data-catalog]
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.
amazon-web-services - 如何从 AWS 胶水中的动态数据框中删除错误记录?
我有一个包含错误记录的动态数据框。请在下面找到代码。
上面的打印语句打印如下。
我需要创建一个仅包含 168456 条记录的动态数据框,并且我需要消除 4 条错误记录。请帮助。
amazon-web-services - 运行大量数据时 AWS 粘合作业失败
我正在从 S3 存储桶中读取一堆 gz 文件并进行一些转换,然后将转换后的数据以 parquet 格式写入 S3。当我执行较少数量的文件时,我没有收到错误。但是当数据变得很大时,下面是错误。即使在作业执行时更改 DPU 的数量,错误仍然保持不变。
AWS 胶水具有将数据写入目标目录的适当权限。任何帮助都感激不尽。
logstash-grok - 不可打印字符的 Grok 模式
我们有用控制字符(退格)分隔的文件;
无论我尝试什么 grok 模式都没有真正解析 s3 中的文件,而且 grok 调试器也没有真正帮助处理不可打印的字符,我有这个,显然这是错误的;
任何帮助将不胜感激
apache-spark - 在 AWS Glue 中附加负载
我需要对 S3 存储桶执行附加加载。
- 每天都有新的 .gz 文件被转储到 S3 位置,胶水爬虫读取数据并在数据目录中更新它。
- Scala AWS Glue 作业运行并仅过滤当天的数据。
- 将上述过滤后的数据按照一定的规则进行转换,并创建一个分区的动态数据框(即年、月、日)级别。
现在我需要将此动态数据帧写入具有前一天所有分区的 S3 存储桶。事实上,我只需要将一个分区写入 S3 存储桶。目前我正在使用下面的代码将数据写入 S3 存储桶。
我不确定上面的代码是否会执行附加加载。有没有办法通过 AWS 胶水库来实现相同的功能?
regex - 这个 AWS 模式“[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\t]*”是什么意思?
使用 terraform 创建胶水表时出现以下错误
terraform 列类型如下所示:
为了可读性,我一直保持缩进。当我将其更改为如下所示的缩小版本时,错误就会消失。
AWS 文档还介绍了多个 API 的这种模式。以下是 Glue 表的列类型所提到的内容。
类型 列中数据的数据类型。
类型:字符串
长度约束:最小长度为 0。最大长度为 131072。
模式:[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\t]*
要求:否
我想了解这种模式,这种模式是什么意思。我尝试搜索模式中提到的 unicode 字符,但无法识别此处表示的字符。我对正则表达式比较熟悉,但从未遇到过这种模式。
amazon-web-services - AWS Glue 数据目录、临时表和 Apache Spark createOrReplaceTempView
根据 AWS Glue 数据目录文档https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-hive-metastore-glue.html
不支持临时表。
我不清楚,或者Temporary tables
我也可以考虑Temporary views
可以通过DataFrame.createOrReplaceTempView
方法在 Apache Spark 中创建的?
所以,换句话说 - 我不能将DataFrame.createOrReplaceTempView
方法与 AWS Glue 和 AWS Glue 数据目录一起使用,对吗?我现在只能使用 AWS Glue 和 AWS Glue 数据目录对永久表/视图进行操作,并且必须使用 AWS EMR 集群来实现全功能的 Apache spark 功能?
amazon-web-services - 在 AWS Glue 中读写 MYSQL
在此处输入图像描述我可以在 juypter 笔记本中本地运行我的 Pyspark 代码时连接到 MYSQL,但是在运行代码时我在 AWS Glue 中遇到通信错误。在 AWS Glue 中创建作业时,我在所需的 jar 文件中添加了 MySQL jar。
从 MYSQL 读取
dataframe_mysql = sqlContext.read.format("jdbc").option("url", "jdbc:mysql://localhost/read").option("driver", "com.mysql.jdbc.Driver").option ("dbtable", "student").option("user", "root").option("password", "root").load()
写入 MYSQL
df = sc.parallelize([[25, 'Prem'],
df.write.format('jdbc').options(
etl - 调用 aws boto3 客户端 api 时粘合作业超时
我使用的是胶水控制台而不是开发端点。胶水作业能够使用以下代码访问胶水目录和表格
现在我想从胶水数据库glue-db 中获取所有表的元数据。我在 awsglue.context api 中找不到函数,因此我使用的是 boto3。
代码在 lambda 函数中运行,但在胶水 etl 作业中失败并出现以下错误
botocore.vendored.requests.exceptions.ConnectTimeout: HTTPSConnectionPool(host='glue.eu-central-1.amazonaws.com', port=443): 最大重试次数超出 url: / (由 ConnectTimeoutError(, 'Connection to glue .eu-central-1.amazonaws.com 超时。(连接超时=60)'))
问题似乎出在环境配置中。Glue VPC 有两个子网私有子网:使用 s3 端点进行粘合,允许来自 RDS 安全组的入站流量。它有公共子网:在带有 nat 网关的胶水 vpc 中。私有子网可通过门 nat 网关访问。我不确定我在这里缺少什么。
apache-spark - AWS Glue 数据目录作为 EMR 上 Spark SQL 的 Metastore 的问题
我有一个带有 Spark(v2.2.1)的 AWS EMR 集群(v5.11.1),并尝试使用 AWS Glue 数据目录作为其元存储。根据官方 AWS 文档(下面的参考链接)中提供的指南,我已按照步骤操作,但在访问 Glue 目录数据库/表方面存在一些差异。EMR 集群和 AWS Glue 都在同一个账户中,并且已提供适当的 IAM 权限。
AWS 文档:https ://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-glue.html
观察:
- 使用 spark-shell(来自 EMR 主节点):
- 作品。能够使用以下命令访问 Glue DB/Tables:
- 使用 spark-submit(来自 EMR 步骤):
- 不工作。不断收到错误“数据库'test_db'不存在”
错误跟踪如下:
INFO HiveClientImpl:Hive 客户端(版本 1.2.1)的仓库位置是 hdfs:///user/spark/warehouse
INFO HiveMetaStore:0:get_database:默认
INFO 审计:ugi=hadoop ip=unknown-ip-addr cmd=get_database:默认
信息 HiveMetaStore:0:get_database:global_temp
信息审计:ugi=hadoop ip=unknown-ip-addr cmd=get_database:global_temp
WARN ObjectStore:无法获取数据库 global_temp,返回 NoSuchObjectException
INFO SessionState:已创建本地目录:/mnt3/yarn/ usercache/hadoop/appcache/application_1547055968446_0005/container_1547055968446_0005_01_000001/tmp/6d0f6b2c-cccd-4e90-a524-93dcc5301e20_resources
INFO SessionState: Created HDFS directory: /tmp/hive/hadoop/6d0f6b2c-cccd-4e90-a524-93dcc5301e20
INFO SessionState: Created local directory: /mnt3/yarn/usercache/hadoop/appcache/application_1547055968446_0005/container_1547055968446_0005_01_000001/tmp/yarn/6d0f6b2c-cccd-4e90-a524-93dcc5301e20
INFO SessionState: Created HDFS directory: /tmp/hive/hadoop/6d0f6b2c -cccd-4e90-a524-93dcc5301e20/_tmp_space.db
INFO HiveClientImpl:Hive 客户端(版本 1.2.1)的仓库位置是 hdfs:///user/spark/warehouse
INFO StateStoreCoordinatorRef:注册的 StateStoreCoordinator 端点
INFO CodeGenerator:生成的代码 > 191.063411 ms INFO CodeGenerator:
在 10.27313 ms 中生成的代码
INFO HiveMetaStore:0:get_database:test_db
信息审计:ugi=hadoop ip=unknown-ip-addr cmd=get_database:test_db
WARN ObjectStore: 获取数据库 test_db 失败,返回 NoSuchObjectException
org.apache.spark.sql.AnalysisException:数据库“test_db”不存在。;在 org.apache.spark.sql.internal.CatalogImpl.requireDatabaseExists(CatalogImpl.scala:44) 在 org.apache.spark.sql.internal.CatalogImpl.setCurrentDatabase(CatalogImpl.scala:64) 在 org.griffin_test.GriffinTest.ingestGriffinRecords (GriffinTest.java:97) 在 org.griffin_test.GriffinTest.main(GriffinTest.java:65) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.spark.deploy.yarn.ApplicationMaster$$anon$2.run( ApplicationMaster.scala:635)
经过大量研究和博客中的许多建议,我尝试了以下修复但无济于事,我们仍然面临着差异。
参考博客:
- https://forums.aws.amazon.com/thread.jspa?threadID=263860
- 带有 AWS Glue 的 Spark 目录:找不到数据库
- https://okera.zendesk.com/hc/en-us/articles/360005768434-How-can-we-configure-Spark-to-use-the-Hive-Metastore-for-metadata-
修复尝试:
- 在 spark-defaults.conf 和 SparkSession 中启用 Hive 支持(代码):
Hive 类位于 CLASSPATH 上,并将 spark.sql.catalogImplementation 内部配置属性设置为 hive:
添加 Hive 元存储配置:
代码片段:
找出这种差异的根本原因的任何建议都会非常有帮助。
感谢你的帮助!谢谢!
amazon-web-services - AWS Glue 自动创建作业
我有可以在 AWS GLUE 中运行的 pyspark 脚本。但是每次我从 UI 创建作业并将我的代码复制到作业时。无论如何我可以从 s3 存储桶中的文件自动创建作业。(我有所有将在运行时使用的库和粘合上下文)