【问题标题】:AWS Glue with AthenaAWS Glue 与 Athena
【发布时间】:2020-06-27 12:48:21
【问题描述】:

我们正处于将所有用 scala 编写的 spark 作业迁移到 aws 胶水的阶段。

当前流程: Apache Hive -> Spark(处理/转换)-> Apache Hive -> BI

所需流量: AWS S3(Athena) -> Aws Glue(Spark Scala -> 处理/转换) -> AWS S3 -> Athena -> BI

TBH 我昨天接到了这个任务,我正在做研发。我的问题是:

  1. 我们能否在 apache 胶水中运行相同的代码,因为它具有动态框架 可以转换为数据帧,但需要更改代码。
  2. 我们可以在 aws 胶水中使用 spark sql api 从 aws athena 读取数据吗 就像我们通常在 spark 中所做的那样。

【问题讨论】:

    标签: amazon-web-services apache-spark aws-glue aws-glue-data-catalog


    【解决方案1】:

    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。

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      我能够运行我当前的代码,只需稍作改动。 我已经构建了 sparkSession 并使用该会话来查询启用了胶合配置单元的目录表。 我们需要在我们的工作中添加这个参数--enable-glue-datacatalog

      SparkSession.builder().appName("SPARK-DEVELOPMENT").getOrCreate()
      var sqlContext = a.sqlContext
      sqlContext.sql("use default")
      sqlContext.sql("select * from testhive").show()
      

      【讨论】:

        猜你喜欢
        • 2021-12-22
        • 1970-01-01
        • 2018-09-26
        • 2019-07-21
        • 1970-01-01
        • 2020-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多