我有一个火花作业,它将从具有相同转换的多个表中提取数据。基本上是一个for循环,它遍历一个表列表,查询目录表,添加时间戳,然后插入Redshift (下面的例子)。
这项工作大约需要30分钟才能完成。有没有一种方法可以在相同的星火/胶水环境下并行运行?如果我能避免的话,我不想制造单独的胶水工作。
import datetime
import os
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from awsglue.dynamicframe import DynamicFrame
f
我是RedShift的新手,但有使用MSSQL的经验。我想知道是否有任何方法可以用Redshift编写if-then-else逻辑
基本上,我想在Redshift中运行这个逻辑
if ((select count(*) from a) - (select count(*) from b)) = 0 then
drop table a;
提前感谢!
假设我有一个Redshift用户'person1‘,密码是'oldpassword',并且我有几个现有的打开的Redshift连接使用这些凭据。然后,我运行以下命令:
alter user person1 password 'newpassword'
对于任何新的连接,我当然必须使用新的凭据'person1'和'newpassword'。但是,已经存在的连接是否仍然有效,或者在执行此命令后它们是否会突然停止工作?
非常感谢!
我想知道为什么在按列选择时,从一个大表(>100个bln行)(即而不是--一个排序键或排序键的一部分)卸载,对于新添加的数据来说要快得多。Redshift是如何理解在第二个场景中是停止顺序扫描的时候了?
执行查询的时间。39米37.02秒:
UNLOAD ('SELECT * FROM production.some_table WHERE daytime BETWEEN
\\'2017-01-15\\' AND \\'2017-01-16\\'') TO ...
与
执行查询的时间。23.01次:
UNLOAD ('SELECT
我希望能够使用Redshift中的变量名,它引用了我的DB对象(比如模式名和表名)。就像..。
SET my_schema="schema":
SET my_table="table";
SELECT * from @my_schema.@my_table;
但看起来Redshift没有这样的功能。有什么解决办法可以做到这一点吗?
我们的数据仓库在Redshift (50 is大小)。有时,业务用户会运行大型查询(太多的联接、内联查询--由BI工具(如Tableau)生成)。大查询会降低数据库性能。
明智的做法是使用红移顶部的星火来卸载红移之外的一些计算?
或者,通过增加更多的节点来增加红移计算能力,会不会更容易、更有成本效益?
如果我在星火中执行select a.col1, b.col2 from table1 a, table2 b where a.key = b.key。表通过JDBC连接,并驻留在Redshift上,实际处理在哪里进行(在Spark或Redshift中)?
在本地运行php时会出现以下错误:
Fri, 25 Mar 2022 03:11:55 +0000---Starting f_contracts with query 1 Fri, 25 Mar 2022 03:12:01 +0000---Starting XML -> JSON conversion
Warning: XMLReader::expand(): /private/tmp/redshift-dump.xml:1109: parser error : Extra content at the end of the document in /Users/hm/repo/f_co
因此,在MSSQL中,我可以执行即席SQL语句。
if exists (select 1 from sys.databases where [name] = 'Admin')
begin
print('do something ');
create schema lala;
create table #temp(dummy nvarchar(128));
insert into #temp(dummy) values('lala');
end
在Redshift中,除了正式的功能或过程之外,我无法做任何类似的事情。
我的用例是从x个Lambda函数中以增量的方式实时提取、转换和加载数据。我希望多个Lambda函数能够并发运行,并且Redshift能够在读取查询时保持活动状态。 由于Redshift不强制执行主键约束,因此我使用亚马逊网络服务文档Merge examples - Example of a merge that replaces existing rows来强制执行唯一行。当只有一个lambda函数实例在运行时,这个方法工作得很好。 -- Start a new transaction
begin transaction;
-- Delete any rows from SALES tha
我正试图在Redshift中创建一个新的表
用来创建新表的代码可以自己工作,但当我将其包装在create中时,它就停止工作了
无效操作:列名“号码”重复;
create table test
as
(select
a.*
,b.*
from a
inner join b
on a.number = b.number
);
知道发生什么事了吗?我不想为省略b.numbe而指定b的每一列
我想探索我的数据红移使用笔记本齐柏林飞艇。一个小型的EMR集群正在后面运行。我正在加载databricks的星火红移库
%dep
z.reset()
z.load("com.databricks:spark-redshift_2.10:0.6.0")
然后
import org.apache.spark.sql.DataFrame
val query = "..."
val url = "..."
val port=5439
val table = "..."
val database = "..."
val
我基本上想在Redshift中做以下事情,但由于Redshift不支持过程语句,我不确定如何实现我的目标:
IF EXISTS (select username,accountnumber from table where username={1})
THEN
IF {0} NOT IN accountnumber
update table set accountnumber =
accountnumber+=',{0}' where username='{1}'
END IF
ELSE
insert
我的用例是从x个Lambda函数中增量地、实时地提取、转换和加载数据。我预计多个Lambda函数将同时运行,Redshift将继续运行读取查询。
由于Redshift不强制主键(S)约束,所以我使用aws文档合并示例-替换现有行的合并示例来强制执行唯一的行。当只有一个lambda函数实例运行时,此方法工作良好。
-- Start a new transaction
begin transaction;
-- Delete any rows from SALES that exist in STAGESALES, because they are updates
-- The join inc
我有一个要求,我需要连接红移Information schema表和User defined表。我已经尝试了下面的查询,并得到了提到的错误。 select *
from pg_table_def a join user_defined_table b
on 1 = 1 -- condition just to give an example
where tablename = 'table1'; SQL Error [500310] [0A000]: [Amazon](500310) Invalid operation: Specified types or functio
我正在尝试执行两个sql命令(创建一个新的模式和表),如果执行失败,将启用两个命令的回滚。我连接到的数据库是AWS Redshift。
create schema if not exists test_schema;
create table test_schema.test_table as select 1;
最初,我尝试使用python以编程方式执行这些命令,同时使用psycopg2和pyodbc,并得到以下错误:
ERROR: schema "test_schema" does not exist
我意识到它失败是因为没有编写第一个命令,因此为了解决这个问题,我尝试打
我有在Postgres上运行良好的Java程序,但是在迁移到Redshift时,我希望这个Postgres程序在Redshift上运行。
在Postgres中,我使用了以下类,并试图在Redshift中使用相同的类。
import org.postgresql.copy.CopyIn;
import org.postgresql.copy.CopyManager;
import org.postgresql.core.BaseConnection;
following is the program snapshot :
Connection insertConnection = OpenDB
我想在redshift中执行一组来自lambda函数的复制命令,在这个函数中,我将大约100 GB的文件从S3复制到redshift中的表中。为此,我不能使用Redshift Data API (因为我现在不能拥有集群的秘密arn,而且在我的情况下,获取临时凭据也不理想)。 我尝试过使用psycopg2库,但是一旦lambda函数超时,执行也会停止。 有没有什么方法可以异步地将查询传递给redshift,并且当lambda函数超时时,查询仍然在redshift中执行?