在 emr 集群中使用 spark 从 oracle 中获取数据并进行处理

Posted

技术标签:

【中文标题】在 emr 集群中使用 spark 从 oracle 中获取数据并进行处理【英文标题】:Fetch data from oracle and process using spark in emr cluster 【发布时间】:2018-10-27 21:15:20 【问题描述】:

我有一个大约有 30 个表的 oracle 表。我想将这些表中特定时间段的数据转储到 EMR 集群中,并运行我对数据的配置单元查询。我想使用 spark 和 AWS EMR 来执行此操作。这将是一个需要每 4 小时运行一次的计划作业。获取的数据量大约为 100 条记录(每 4 小时)。如何从 oracle 获取数据并对数据运行 hive 查询?

【问题讨论】:

【参考方案1】:

我会添加评论,但分数不够,所以我写在这里。

如果我对您的理解正确,您希望每 4 小时从 Oracle 获取 +/- 100 行,对吗?如果是这样,为什么你需要使用 Spark 或 Hive 来做到这一点?您不能简单地直接在 Oracle 中每 4 小时使用这 100 行创建一个视图并直接查询它吗?需要担心的是,如果数据适合您的单台机器并且预计不会快速增长,则您不需要任何分布式解决方案。

【讨论】:

感谢您的回复。在 15 个表中每个表大约 400-500 行,在其他 15 个表中大约 0-100 行。我需要获取数据,进行一些转换(标记 npi 数据),创建一个 csv 文件并将这些文件推送到 S3 存储桶。 那么我认为你应该能够独立完成。除非您希望将来必须处理 x1000 行或更多行,否则构建一个集群只是为了获取最坏的 9000 行,IMO 有点矫枉过正。您可以编写一个简单的 Python/Scala 程序,使用提供的函数(映射、过滤器...)进行转换,一个库生成 CSV,另一个库推送到 S3(AWS SDK 非常适合)。 谢谢@bartosz25

以上是关于在 emr 集群中使用 spark 从 oracle 中获取数据并进行处理的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Lambda 函数在亚马逊 EMR 上执行 spark 提交?

无法使用 Pyspark 从 EMR 集群连接到雪花

在 EMR 中使用 spark ad scala 从 redshift 加载数据

在 EMR 集群上引导 Spark 3.0.0

从 EMR spark 连接到 EMR presto - 连接失败

如何将 Spark EMR 集群与 AWS elasticsearch 集群连接起来