AWS EMR 中的数据转换,无需使用 Scala 或 Python

Posted

技术标签:

【中文标题】AWS EMR 中的数据转换,无需使用 Scala 或 Python【英文标题】:Data Transformation in AWS EMR without using Scala or Python 【发布时间】:2017-08-07 17:18:11 【问题描述】:

我有一种星型模式的数据库结构,例如一个具有所有 id 和键的事实表,而有多个维度表具有实际 id、代码、对事实表中引用的 id 的描述。

我们正在将所有这些表(事实和维度)单独移动到 S3(云),每个表数据在 S3 位置拆分为多个 parquet 文件(每个表一个 S3 对象)

查询:我需要在云上执行转换(即)我需要剥离事实表中引用的所有 id 和键,并将其替换为驻留在维度表中的实际代码,并创建另一个文件并存储最终输出回到 S3 位置。此文件稍后将由 Redshift for Analytics 使用。

我的疑问: 实现此解决方案的最佳方法是什么,因为我不需要 Redshift 中的原始数据(密钥和 ID)来进行成本和存储优化? 在执行数据转换之前,我们是否需要先将这些拆分文件(parquet)组合成一个大文件(ie)。另外,在数据转换之后,我打算将最终输出文件保存为 parquet 格式,但问题是,Redshift 不允许复制 parquet 文件,所以有解决方法吗 我不是铁杆程序员,想避免在 EMR 中使用 scala/python,但我擅长 SQL,所以有没有办法通过 SQL 通过 EMR 在云中执行数据转换并将输出数据保存到一个或多个文件中.请指教

【问题讨论】:

【参考方案1】:

您应该能够使用 amazon athena 直接针对您的 s3 parquet 数据运行 redshift 类型查询

一些相关信息 https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/

【讨论】:

以上是关于AWS EMR 中的数据转换,无需使用 Scala 或 Python的主要内容,如果未能解决你的问题,请参考以下文章

%matplotlib 内联魔术命令无法从 AWS-EMR Jupyterhub Notebook 中的先前单元格读取变量

使用 AWS EMR 的 ETL

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

[AWS][大数据][Hadoop] 使用EMR做大数据分析

在 AWS EMR 上使用 pyspark

在插入语句中使用语句 HIVE EMR AWS