amazon-web-services - AWS Glue 与 Athena
问题描述
我们正处于将所有用 scala 编写的 spark 作业迁移到 aws 胶水的阶段。
当前流程: Apache Hive -> Spark(处理/转换)-> Apache Hive -> BI
所需流程: AWS S3(Athena) -> Aws Glue(Spark Scala -> 处理/转换) -> AWS S3 -> Athena -> BI
TBH 我昨天接到了这个任务,我正在做研发。我的问题是:
- 我们可以在 apache 胶水中运行相同的代码,因为它具有可以转换为数据帧但需要更改代码的动态帧。
- 我们可以像通常在 spark 中那样在 aws 胶水中使用 spark sql api 从 aws athena 读取数据吗?
解决方案
Aws 胶水扩展了 Apache Spark 的功能。因此,您始终可以按原样使用您的代码。
您需要做的唯一更改是更改会话变量的创建和提供的参数的解析。您可以运行普通的旧 pyspark 代码,甚至无需创建动态帧。
def createSession():
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
return sc, glueContext, spark, job
#To handle the arguments
args = getResolvedOptions(sys.argv, ['JOB_NAME', 'arg1', 'arg2'])
arg1 = args['arg1'].split(',')
arg2 = args['arg2'].strip()
#To initialize the job
job.init(args['JOB_NAME'], args)
#your code here
job.commit()
它还支持通过胶水目录的 spark sql。
希望能帮助到你
推荐阅读
- laravel-5 - 同一个 api 上的请求太多
- mysql - Wordpress 元值(序列化)过滤器
- css - CSS网格`grid-auto-columns`与`grid-template-columns`之间的区别?
- c# - 在 C# 中下载文件的内容配置
- c - 睡眠系统调用,默认睡眠时间是多少?
- makefile - 更改头文件时如何使Makefile重新编译?
- java - 从另一个类中的方法更改字段属性
- angular - 如何在 docker 中为 Angular 应用程序公开端口
- vue.js - vue.js Toast 未定义(使用 mint-ui 时)
- php - PHP - Laravel - Trait 方法标记尚未应用,因为与 App\User 上的其他 trait 方法存在冲突