我正在尝试使用 hive 在 EMR 中运行的 Spark 中使用来自 Spark 的 s3 路径位置在 Glue 目录中创建一个表。我已尝试以下命令,但出现错误:
pyspark.sql.utils.AnalysisException:u'java.lang.IllegalArgumentException:无法从空字符串创建路径;'
sparksession.sql("CREATE TABLE IF NOT EXISTS abc LOCATION 's3://my-bucket/test/' as (SELECT * from my_table)")
sparksession.sql("CREATE TABLE abcSTORED AS PARQUET LOCATION 's3://my-bucket/test/' AS select * from my_table")
sparksession.sql("CREATE TABLE abcas SELECT * from my_table USING PARQUET LOCATION 's3://my-bucket/test/'")
有人可以建议我缺少的参数吗?
hive amazon-web-services pyspark aws-glue-data-catalog aws-glue-spark
已搜索 AWS Glue 文档,但找不到 AWS Glue 工作线程类型 G.1X 和 G.2X 的定价详细信息。有人可以解释一下标准、G.1X 和 G.2X 之间是否没有成本差异吗?
我所能看到的 Glue 定价部分是“您需要按每 DPU 小时 0.44 美元计费,增量为 1 秒,四舍五入到最接近的秒。使用 Glue 版本 2.0 的 Glue Spark 作业的最短计费持续时间为 1 分钟。 ”。这与工人类型无关吗?
标准类型 - 16 GB 内存、4 个 vCPU 计算能力和 50 GB 附加 EBS 存储(2 个执行程序)
G.1X - 16 GB 内存、4 个 vCPU 和 64 GB 附加 EBS 存储(1 个执行程序)
G.2X - G.1X 的两倍 ( https://aws.amazon.com/blogs/big-data/best-practices-to-scale-apache-spark-jobs-and-partition-data-with-aws -glue/ ) 这意味着,
G.2X - 32 GB 内存、8vCPU、128 GB EBS !!
感谢对此的任何投入。 …
amazon-web-services aws-glue aws-glue-data-catalog aws-glue-spark
我第一次使用 AWS Glue 的作业,因此我的作业不起作用是正常的,但我看不到任何有关错误的详细日志,因为当我单击“错误日志”链接或“日志”链接 我总是在 AWS CloudWatch 中收到此消息:
* Log group does not exist
The specific log group: /aws-glue/jobs/error does not exist in this account or region.
* An error occurred while describing log streams.
c.substring is not a function
Run Code Online (Sandbox Code Playgroud)
如何查看 AWS Glue 日志?AWS Glue 不会自动创建日志组吗?
我使用 Glue Studio 创建了一个 AWS Glue 作业。它从 Glue 数据目录获取数据,进行一些转换,然后写入不同的数据目录。
配置目标节点时,我启用了运行后创建新分区的选项:
该作业成功运行,数据以正确的分区文件夹结构写入 S3,但在实际的数据目录表中没有创建新分区 - 我仍然需要运行 Glue Crawler 来创建它们。
生成的脚本中负责创建分区的代码如下(作业的最后两行):
DataSink0 = glueContext.write_dynamic_frame.from_catalog(frame = Transform4, database = "tick_test", table_name = "test_obj", transformation_ctx = "DataSink0", additional_options = {"updateBehavior":"LOG","partitionKeys":["date","provider"],"enableUpdateCatalog":True})
job.commit()
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?为什么没有创建新分区?如何避免运行爬网程序才能在 Athena 中获取可用数据?
我正在使用 Glue 2.0 - PySpark 2.4
amazon-web-services apache-spark-sql pyspark aws-glue aws-glue-spark
我成功运行了一个 AWS Glue 作业,用于转换数据以进行预测。如果达到特定条件,我想停止处理并输出状态消息(正在运行):
if specific_condition is None:
s3.put_object(Body=json_str, Bucket=output_bucket, Key=json_path )
return None
Run Code Online (Sandbox Code Playgroud)
这会产生“SyntaxError:'return'外部函数”,我尝试过:
if specific_condition is None:
s3.put_object(Body=json_str, Bucket=output_bucket, Key=json_path )
job.commit()
Run Code Online (Sandbox Code Playgroud)
这不是在 AWS Lambda 中运行,而是使用 Lambda 启动的胶水作业(例如 start_job_run())。
我有 Glue 作业,一个 python shell 代码。当我尝试运行它时,我最终收到以下错误。
Job Name : xxxxx Job Run Id : yyyyyy failed to execute with exception Internal service error : Invalid input provided
它不是特定于代码的,即使我只是输入
import boto3
print('loaded')
Run Code Online (Sandbox Code Playgroud)
单击运行作业选项后,我立即收到错误消息。这里有什么问题呢?
python amazon-s3 amazon-web-services aws-glue aws-glue-spark
toDF() 方法的文档指定我们可以将选项参数传递给该方法。但它没有指定这些选项是什么(https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-pyspark-extensions-dynamic-frame.html)。有谁知道是否有关于此的进一步文档?我对从 DynamicFrame 创建 DataFrame 时传递架构特别感兴趣。
我有一个由 Glue 工作流程触发的简单胶水 etl 作业。它从爬虫表中删除重复数据并将结果写回 S3 存储桶。作业已成功完成。但是,spark 生成“$ folder $”的空文件夹保留在 s3 中。它在层次结构中看起来不太好并会导致混乱。有没有办法在成功完成工作后配置火花或胶水上下文来隐藏/删除这些文件夹?
amazon-web-services aws-glue aws-glue-workflow aws-glue-spark
我有一个胶水中的 pyspark 代码,我想创建一个具有映射结构的数据框,该数据框是整数和字符串的组合。
样本数据:
{ "Candidates": [
{
"jobLevel": 6,
"name": "Steven",
}, {
"jobLevel": 5,
"name": "Abby",
} ] }
Run Code Online (Sandbox Code Playgroud)
因此,我尝试使用下面的代码来创建地图数据类型。但每次整数数据类型 jobLevel 都会转换为字符串数据类型。有什么建议可以通过保留作业级别的数据类型来完成此任务吗?
使用的代码:
df = spark.sql("select Supervisor_name,
map('job_level', INT(job_level_name),
'name', employeeLogin) as Candidates
from dataset_1")
Run Code Online (Sandbox Code Playgroud) 有没有办法在 AWS 中运行 Glue 作业,其中所有必要的代码都内置到 JAR 工件中并上传到 S3?
现在我能做的最好的事情就是像占位符包装脚本一样
import project.ActualMainClass
object ScriptMain {
def main(sysArgs: Array[String]): Unit = {
ActualMainClass.main(sysArgs)
}
}
Run Code Online (Sandbox Code Playgroud)
如果我可以跳过额外的包装器并仅提供 JAR 和入口点,那就太好了。