问题标签 [amazon-redshift-spectrum]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
14362 浏览

amazon-web-services - 将 Parquet 文件加载到 Redshift

我在 S3 上有一堆 Parquet 文件,我想以最佳方式将它们加载到 redshift 中。

每个文件被分成多个块......将数据从 S3 加载到 Redshift 的最佳方式是什么?

另外,如何在 Redshift 中创建目标表定义?有没有办法从 Parquet 推断模式并以编程方式创建表?我相信有一种方法可以使用 Redshift 频谱来做到这一点,但我想知道这是否可以在脚本中完成。

感谢你的帮助!

我正在考虑使用所有 AWS 工具(例如 Glue、Lambda 等)以最佳方式执行此操作(在性能、安全性和成本方面)。

0 投票
0 回答
1339 浏览

python - 镶木地板文件中的 Redshift 外部表显示字符串数据类型的空值

我正在 Redshift 中创建一个外部表,指向存储在 S3 中的 Parquet 文件。parquet 文件是使用 pyarrow 创建的。当我 SELECT * 在“时间戳”下方定义的外部表有效但“anonymous_id”(VARCHAR)为空时。这同样适用于任何 VARCHAR。

镶木地板模式是:

知道为什么会这样吗?STL_S3CLIENT_ERROR 说:

非常感谢您的帮助!

0 投票
5 回答
5374 浏览

python - 如何在卸载中转义单引号

我正在尝试执行上述脚本来读取表,然后在 S3 中创建一个文件

由于我的列是字符串,我无法跳过单引号,并且在 where 附近出现语法错误

另外,我尝试在 where 条件下给出 \ 仍然显示相同的错误。

任何帮助将不胜感激。

谢谢

0 投票
2 回答
952 浏览

amazon-web-services - “解析列类型时出错”Redshift Spectrum

我有一个频谱用例,它使用来自 s3 的大量 json 文件。我首先使用 Glue 爬虫来爬取数据以创建数据目录。然后使用该目录,我创建了一个外部模式来引用 Glue 数据库,以便我可以访问该目录。现在我可以在根级字符串上执行选择语句,它可以工作 例如:

问题是,当我对结构对象执行选择语句时,我收到此错误“解析列't.actor.name'的类型时出错”。这是一个示例选择(id 是 actor 结构中的一个字符串):

我错过了什么?我还尝试将 json 转换为镶木地板,并且在尝试查询嵌套数据时遇到了同样的问题。

这是胶水表def:

在此处输入图像描述

这是演员结构:

在此处输入图像描述

0 投票
1 回答
1085 浏览

amazon-s3 - 我可以在 redshift 中为外部表添加别名以删除架构名称吗?

我们想将表迁移到 Spectrum,这需要定义一个外部模式

我在 Redshift 中创建了一个外部表,如下所示:

是否可以给表起别名,以便在查询时可以调用它my_table_alias而不是spectrum.my_table? 基本上,我们希望对 Redshift 实例的客户端不透明地更改外部表(这意味着我们无法更改表名)。非常感谢你的帮助!

0 投票
1 回答
1745 浏览

amazon-web-services - 如何将包含换行符的 Redshift 数据卸载到单行中?

我正在尝试卸载红移数据并使用 spark 读取它。但是与 Redshift 表中的原始记录相比,我在卸载数据中获得了更多行。发生这种情况是因为数据中有换行符。如何卸载数据以便我可以使用 spark 安全地读取它(而不会遇到格式错误的记录问题)

一列的样本数据 -

我在卸载时尝试了以下三种组合但没有运气 -

ALLOWOVERWRITE 分隔符 '\001' 转义;

ALLOWOVERWRITE 分隔符 '\001' 转义加引号;

ALLOWOVERWRITE 分隔符 '\001' 添加引号;

在此处输入图像描述

0 投票
1 回答
737 浏览

sql - Redshift Spectrum Query - S3 查询层中的请求内存不足

我正在尝试对 26 列进行分组来执行查询。数据以按天分区的拼花格式存储在 S3 中。Redshift Spectrum 查询返回以下错误。我无法在 aws 中找到与此相关的任何相关文档。

S3 查询层中的请求内存不足

  1. 表中总行数:7.7亿
  2. Parquet 格式的表格总大小:45 GB
  3. 每个分区中的记录数:420 万
  4. 百万 Redshift 配置:单节点 dc2.xlarge

附表ddl 在此处输入图像描述

0 投票
2 回答
1200 浏览

postgresql - 将数据从 PostgreSQL 移动到 AWS S3 并使用 RedShift Spectrum 进行分析

我有大量具有不同模式的 PostgreSQL 表以及其中的大量数据。

我现在无法进行数据分析,因为数据量非常大 - 几 TB 的数据,而 PostgreSQL 无法在合理的时间内处理查询。

我正在考虑以下方法 - 我将使用 Apache Spark 处理我的所有 PostgreSQL 表,加载 DataFrame 并将它们作为 Parquet 文件存储在 AWS S3 中。然后我将使用 RedShift Spectrum 来查询存储在这些 PARQUET 文件中的信息。

首先,我想问一下——这个解决方案会起作用吗?

第二个 - RedShift Spectrum 是否能够从这些 Parquet 文件自动创建 EXTERNAL 表而无需额外的架构规范(即使原始 PostgreSQL 表包含 AWS RedShift 不支持的数据类型)?

0 投票
0 回答
498 浏览

amazon-web-services - 通过架构更改在 S3 和 Redshift 之间卸载和重新加载数据

我有兴趣设置一些自动化作业,这些作业将定期从我们的 Redshift 实例中导出数据并将其存储在 S3 上,理想情况下,它将通过在 Redshift Spectrum 中运行的外部表重新回到 Redshift。我不确定如何最好地处理的一件事是,我正在使用的某些表会随着时间的推移而改变模式。

我能够毫无问题地将数据从 Redshift 卸载到 S3,而且我还能够在 Redshift 中设置一个外部表,并使 S3 数据可用于查询。但是,我不确定如何最好地处理我们的表会随着时间的推移更改列的情况。例如,对于我们通过 Segment 捕获的某些事件数据,添加的特征将导致 Redshift 表上的新列在以前的 UNLOAD 中不存在。在 Redshift 中,在列存在之前进入的数据的列值只会导致 NULL 值。

随着时间的推移,处理这种数据结构逐渐变化的最佳方法是什么?如果我只是更新外部表中的新字段,Redshift 将能够处理这些字段不一定存在于较旧的 UNLOAD 上的事实,还是我需要走其他路线?

0 投票
1 回答
34 浏览

sql - Amazon Spectrum 直接从字符串增量加载

我从光谱中取了一个字段作为“文件名 Pro_180913_171842”。尝试了sql中的功能,例如

但它只返回空行!