我正在尝试从 S3(镶木地板文件)插入 Redshift 数据。通过 SQLWorkbench 完成 600 万行需要 46 秒。但是通过连接器 spark-redshift 完成它大约需要 7 分钟。
我正在尝试使用更多节点并获得相同的结果。
有什么建议可以提高使用 spark-redshift 的时间吗?
Spark中的代码:
val df = spark.read.option("basePath", "s3a://parquet/items").parquet("s3a://parquet/items/Year=2017/Month=7/Day=15")
df.write
.format("com.databricks.spark.redshift")
.option("url", "jdbc:....")
.option("dbtable", "items")
.option("tempdir", "s3a://parquet/temp")
.option("aws_iam_role", "...")
.option("sortkeyspec", "SORTKEY(id)")
.mode(SaveMode.Append)
.save()
SQLWorkbench (Redshift SQL) 中的代码:
CREATE EXTERNAL TABLE items_schema.parquet_items("id type, column2 type....")
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
STORED AS PARQUET
LOCATION 's3://parquet/items/Year=2017/Month=7/Day=15';
CREATE TABLE items ("id type, column2 type....");
INSERT INTO items (SELECT * FROM items_schema.parquet_items);