AWS Glue 与 Athena
AWS Glue with Athena
我们正处于将所有用 scala 编写的 spark 作业迁移到 aws glue 的阶段。
当前流量:
Apache Hive -> Spark(Processing/Transformation) -> Apache Hive -> BI
所需流量:
AWS S3(Athena) -> Aws Glue(Spark Scala -> Processing/Transformation) -> AWS S3 -> Athena -> BI
TBH 我昨天接到了这个任务,我正在进行研发。我的问题是:
- 我们可以 运行 在 apache glue 中使用相同的代码,因为它有动态框架
可以转换为数据帧,但需要更改代码。
- 我们可以在 aws glue 中使用 spark sql api 从 aws athena 读取数据吗
就像我们通常在 spark 中所做的那样。
我可以 运行 我当前的代码稍作改动。
我已经构建了 sparkSession 并使用该会话来查询启用了 glue hive 的目录 table。
我们需要在我们的工作中添加这个参数 --enable-glue-datacatalog
SparkSession.builder().appName("SPARK-DEVELOPMENT").getOrCreate()
var sqlContext = a.sqlContext
sqlContext.sql("use default")
sqlContext.sql("select * from testhive").show()
Aws glue 扩展了 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 over glue catalog。
希望对您有所帮助
我们正处于将所有用 scala 编写的 spark 作业迁移到 aws glue 的阶段。
当前流量: Apache Hive -> Spark(Processing/Transformation) -> Apache Hive -> BI
所需流量: AWS S3(Athena) -> Aws Glue(Spark Scala -> Processing/Transformation) -> AWS S3 -> Athena -> BI
TBH 我昨天接到了这个任务,我正在进行研发。我的问题是:
- 我们可以 运行 在 apache glue 中使用相同的代码,因为它有动态框架 可以转换为数据帧,但需要更改代码。
- 我们可以在 aws glue 中使用 spark sql api 从 aws athena 读取数据吗 就像我们通常在 spark 中所做的那样。
我可以 运行 我当前的代码稍作改动。 我已经构建了 sparkSession 并使用该会话来查询启用了 glue hive 的目录 table。 我们需要在我们的工作中添加这个参数 --enable-glue-datacatalog
SparkSession.builder().appName("SPARK-DEVELOPMENT").getOrCreate()
var sqlContext = a.sqlContext
sqlContext.sql("use default")
sqlContext.sql("select * from testhive").show()
Aws glue 扩展了 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 over glue catalog。
希望对您有所帮助