我正在研究PostgreSQL 8.2.15(Greenplum数据库4.2.0 build 1)(HAWQ 1.2.1.0 build 10335).
我写了一个函数
create or replace function my_function (
...
select exists(select 1 from my_table1 where condition) into result;
Run Code Online (Sandbox Code Playgroud)
我测试了它
select my_function(params);
Run Code Online (Sandbox Code Playgroud)
它可以完全奏效!
这是问题,如果我调用函数就好了
select my_function(params) from my_table2;
Run Code Online (Sandbox Code Playgroud)
Postgres告诉我你错了!
错误:关系"my_table1"不存在(segXX sliceX xx.xx.xx:40003 pid = 570406)
所以,请帮帮我.
我尝试了什么
2015/04/19编辑
Postgre - > Postgres
我尝试过就好了
select my_function(params) from pg_stat_activity;
Run Code Online (Sandbox Code Playgroud)
没关系.
如果编辑那个功能就好
create or replace function my_function (
...
select true into result;
Run Code Online (Sandbox Code Playgroud)
它可以在任何情况下工作.
我想使用一个简单的talend作业在greenplum HAWQ中创建视图,它基本上有一个fileinput包含我需要执行CREATE VIEW脚本的所有视图.
由于这些视图(50-60.000)来自oracle系统,我需要找到我们无法创建的视图.
这是我的问题的模拟:

我已经在数据库中有了一个视图,我想再创建它3次.这显然会失败.
这是输出:
Exception in component tGreenplumRow_2
org.postgresql.util.PSQLException: ERROR: relation "ad_apps_dependencies" already exists
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1592)
.--------------.
| tLogRow_4 |
|=------------=|
|componenterror|
|=------------=|
|componenterror|
'--------------'
.-----------------------------------------------------+-------------------------------------------------------------.
| tLogRow_5 |
|=----------------------------------------------------+------------------------------------------------------------=|
|result |result1 |
|=----------------------------------------------------+------------------------------------------------------------=|
|ERROR: relation "ad_apps_dependencies" already exists|CREATE VIEW SYSTEM.AD_APPS AS SELECT * FROM APPLSYS.AD_APPS|
'-----------------------------------------------------+-------------------------------------------------------------'
.------------.
| tLogRow_6 |
|=----------=|
|subjobError |
|=----------=|
|Subjob Error|
'------------'
Run Code Online (Sandbox Code Playgroud)
我希望这个输出有3次,因为我尝试运行3次查询.(在最终版本中,我将创建另一个仅包含失败查询的文件,因此我们稍后可以修复它,但这是关键点.)
作为一种解决方法:我可以将此tRow - > OnError - > FixedFlow - > FailedViews部分移动到不同的作业中,但这不是一个优雅的解决方案.
我是 Hadoop 和 HDFS 的新手,我很困惑为什么 HDFS 不是需要低延迟的应用程序的首选。在大数据场景中,我们会将数据分布在不同的社区硬件上,因此访问数据应该更快。
我在Greenplum DB中有TB结构化数据.我需要在我的数据上运行基本上是MapReduce的作业.
我发现自己至少重新实现了MapReduce的功能,以便这些数据适合内存(以流式方式).
然后我决定到别处寻找更完整的解决方案.
我看了Pivotal HD + Spark,因为我使用Scala和Spark基准测试是令人惊叹的因素.但我相信这背后的数据存储HDFS的效率将低于Greenplum.(请注意"我相信".我很高兴知道我错了,但请提供一些证据.)
因此,为了与Greenplum存储层保持一致,我查看了Pivotal的HAWQ,它基本上是在Greenplum上使用SQL的Hadoop.
这种方法有很多功能丢失.主要是使用Spark.
或者是否更好地使用内置的Greenplum功能?
所以我处在不知道哪条路最好的十字路口.我想要很好地处理适合关系数据库模型的TB数据,我希望Spark和MapReduce的好处.
我要求太多了吗?
我们已经安装了新的gpdb数据库。但是,当尝试连接template0数据库时。
[gpadmin@mdw~]$ psql -d template0
psql: FATAL: database "template0" is not currently accepting connections
[gpadmin@mdw~]$
Run Code Online (Sandbox Code Playgroud)
我们试图更新旗帜
template1=# UPDATE pg_database SET datallowconn = TRUE WHERE datname = 'template0';
ERROR: permission denied: "pg_database" is a system catalog
template1=#
Run Code Online (Sandbox Code Playgroud)
但是,不允许更新FLAG
hawq ×5
greenplum ×4
apache-spark ×2
hadoop ×2
etl ×1
hdfs ×1
postgresql ×1
scala ×1
talend ×1