我启动了带有EMR 5.28.0,Spark和Hive的AWS EMR集群。 我曾经使用带有spark-redshift连接器的Spark SQL,这使我能够在Redshift中进行读取/写入,从而创建如下外部表:
CREATE TABLE `test`.`redshift_table` (`id` INT, `object_id` STRING)
USING com.databricks.spark.redshift
OPTIONS (
`tempdir` 's3a://my_bucket/table/',
`url` 'jdbc:redshift://xxxxxx:5439/database?user=user&password=password',
`forward_spark_s3_credentials` 'true',
`serialization.format` '1',
`dbtable` 'my.table'
)
现在我正在寻找Hive中的等效内容:
我一直在环顾四周,但是我不确定CREATE TABLE的格式是什么,以及之前是否需要在集群上安装其他东西。
谢谢
更新: 我现在可以使用这些罐子通过EMR 5.28.0做到这一点:
,然后在Hive中使用以下命令创建表:
CREATE EXTERNAL TABLE test.table(
id INTEGER,
name STRING
)
STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler'
TBLPROPERTIES (
"hive.sql.database.type" = "POSTGRES",
"hive.sql.jdbc.driver" = "com.amazon.redshift.jdbc.Driver",
"hive.sql.jdbc.url" = "jdbc:redshift://host:5439/database",
"hive.sql.dbcp.username" = "user",
"hive.sql.dbcp.password" = "password",
"hive.sql.table" = "schema.name",
"hive.sql.dbcp.maxActive" = "1"
);
我现在遇到的问题是它不会将谓词下推到Redshift。例如“ SELECT * FROM test.table,其中id = 1;”首先执行Redshift查询以读取整个表格,请问如何更改此行为?
我检查了Hive设置,并且拥有:
hive.optimize.ppd=true
hive.optimize.ppd.storage=true