在 AWS Glue pySpark 脚本中使用 SQL

2024-04-09

我想使用 AWS Glue 将一些 csv 数据转换为 orc。
我创建的 ETL 作业生成了以下 PySpark 脚本:

import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job

args = getResolvedOptions(sys.argv, ['JOB_NAME'])

sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)

datasource0 = glueContext.create_dynamic_frame.from_catalog(database = "tests", table_name = "test_glue_csv", transformation_ctx = "datasource0")

applymapping1 = ApplyMapping.apply(frame = datasource0, mappings = [("id", "int", "id", "int"), ("val", "string", "val", "string")], transformation_ctx = "applymapping1")

resolvechoice2 = ResolveChoice.apply(frame = applymapping1, choice = "make_struct", transformation_ctx = "resolvechoice2")

dropnullfields3 = DropNullFields.apply(frame = resolvechoice2, transformation_ctx = "dropnullfields3")

datasink4 = glueContext.write_dynamic_frame.from_options(frame = dropnullfields3, connection_type = "s3", connection_options = {"path": "s3://glue/output"}, format = "orc", transformation_ctx = "datasink4")
job.commit()

它获取 csv 数据(来自 Athena 表tests.test_glue_csv 指向的位置)并输出到s3://glue/output/.

如何在此脚本中插入一些 SQL 操作?

Thanks


您应该首先从动态框架创建一个临时视图/表

dyf.toDF().createOrReplaceTempView("view_dyf")

Here, dyf是你的动态框架。

然后,使用您的 Spark 对象对其应用 sql 查询

sqlDF = spark.sql("select * from view_dyf")
sqlDF.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 AWS Glue pySpark 脚本中使用 SQL 的相关文章

随机推荐

  • Android 4.4.4 上的改造 SSL 错误

    我们有一个现有的 Android 应用程序 它使用 Retrofit 连接到服务器并发送和接收 JSON 自从将我的设备更新到 Android 4 4 4 后 我在尝试连接时收到以下错误 D Retrofit 8004 javax net
  • Android Volley ECONNRESET

    我尝试使用Volley库并将图像上传到服务器 该库应该在独立模式下执行此过程 但出现以下错误消息 java net SocketException 发送失败 ECONNRESET 连接重置 由同行 是否可能是服务器端配置错误 我尝试上传一个
  • 不需要时禁用 R Shiny 中的 selectInput

    我正在构建一个shiny网页由两个表单组成selectInput 第一个 静态 在ui部分和第二部分 动态 在server部分 实际问题的简化如下所示 require shiny ui lt fluidPage The static inp
  • 防止“删除和更新”firebase中的子项

    我发现没有办法设置安全规则来防止孩子的 删除和更新 write data exists newData exists newData exists 那没有道理 为了便于将来参考 Firebase 控制台允许您测试数据库安全规则 以便您可以在
  • EF 7 迁移到现有数据库

    我正在使用 ASP Net 5 和 EF7 开发一个 Web 项目 我已将现有数据库中的所有表导入到项目中的模型中 但是 我在迁移方面遇到了问题 我已经创建了初始迁移 对特定实体进行了一些更改 在所做的更改之后创建了另一个迁移 现在想要在数
  • 快速排序可以在没有堆栈和递归的情况下用C实现吗?

    我找到了这个帖子如何在c中不使用堆栈进行迭代快速排序 https stackoverflow com questions 32388760 how to do iterative quicksort without using stack
  • 如何在powershell中获取对象属性的名称?

    我知道我可以使用 get member 来获取对象的所有属性 但我正在浏览对象列表 并且我对名称不断变化的最后一个属性感兴趣 为了自动化我的脚本 我试图获取最后一个属性的名称 但我不确定如何获取 假设我有 result get member
  • 如何在php脚本中加载Wordpress环境?

    如何在脚本中加载Wordpress环境 以便使用Wordpress的功能 我需要这个 因为我需要从异步执行的脚本中调用多个函数 您需要加载 wp load php 文件 然后该文件将允许您调用 WordPress 函数 例如 require
  • 安装和配置 xvfb

    我正在尝试找到兼容的 Ubuntu 操作系统 xorg 版本和 xvfb 版本 任何人都可以帮我指导安装 xvfb 而不需要挂断吗 初始化内置扩展 GLX 到目前为止我已经尝试过以下方法 Ubuntu 13 Server No graphi
  • 枚举在类体之外但在命名空间内的定义

    今天 我遇到了一些类似这样的代码 namespace Foo public enum Game High Low public enum Switch On Off public class Bar Blah 我无法弄清楚这与在类中声明枚举
  • 如何释放切片分配的内存? [复制]

    这个问题在这里已经有答案了 package main import fmt time func main storage string for i 0 i lt 50000000 i storage append storage strin
  • 在 Eclipse 中复制并粘贴会在每个粘贴行的末尾添加窗口换行符

    我在 Mac OS X 10 7 上使用 Eclipse 版本 Indigo Service Release 2 以及 PHP 开发工具和 Aptana Studio 3 插件 在 首选项 gt 常规 gt 工作区 中 我选择了 文本文件编
  • GTK 中的延迟加载列表视图#

    我希望通过 GTK 中的列表视图显示大型数据集 而性能是这里的一个问题 我目前正在使用由 ListStore 支持的 TreeView 但将所有数据添加到 ListStore 需要很长时间 GTK 中是否有某种支持延迟加载数据的列表视图小部
  • 使用 win32 从 Python 中的 Outlook Exchange 中提取发件人的电子邮件地址

    我正在尝试使用 python 中的 win32 包从 Outlook 2013 中提取发件人的电子邮件地址 我的收件箱中有两种电子邮件地址类型 exchange 和 smtp 如果我尝试打印 Exchange 类型的发件人电子邮件地址 我会
  • 在gradle依赖中指定ivy配置

    我想解决 ivy 存储库的依赖关系 但我不知道如何为其指定 ivy 配置 我发现我应该这样做 myconf group com eu module MyModule version 1 0 0 configuration ivyconf 但
  • 如何在 Jira 中存档项目,以便它们从项目选择器中消失

    我们在 Jira Studio 中有一堆旧项目 我们希望保持在线状态 以防万一 如果我们出于某种原因需要返回它们 但我不希望它们出现在我们日常 Jira 使用中的任何地方 即仪表板 项目选择器等 我按照官方指示进行操作here http c
  • 算法:求给定范围内的数字个数

    给定一个可能存在重复项的未排序数字数组 对数组进行预处理 以便找到给定范围内的数字个数 时间为 O 1 例如 7 2 3 2 4 1 4 6 两者的数字计数 gt 2 and lt 5 is 5 2 2 3 4 4 对数组进行排序 对于已排
  • 是否可以在没有接收器实例的情况下将信号连接到静态插槽?

    是否可以在没有接收器实例的情况下将信号连接到静态插槽 像这样 connect object SIGNAL some STATIC SLOT staticFooMember 有一个QApplication closeAllWindows Qt
  • Rails 3.2 和 mongoid + simple_form 上的 validates_presence_of if 条件

    我想验证这两个属性的存在 shipping cost and shipping cost anywhere如果属性 shipping等于true 而如果 我的模型中有这个 但对我来说效果不佳 validates presence of sh
  • 在 AWS Glue pySpark 脚本中使用 SQL

    我想使用 AWS Glue 将一些 csv 数据转换为 orc 我创建的 ETL 作业生成了以下 PySpark 脚本 import sys from awsglue transforms import from awsglue utils