我们有大量的服务器数据存储在S3
(很快将在Parquet
格式)。数据需要进行一些转换,因此它不能直接从 S3 复制。我将使用Spark
访问数据,但我想知道是否可以跳过一个步骤并运行查询来提取/转换数据,然后复制它,而不是使用 Spark 操作它,写回 S3,然后复制到 Redshift直接红移?
当然,完全有可能。
用于读取 parquet 的 Scala 代码(取自here http://spark.apache.org/docs/latest/sql-programming-guide.html#loading-data-programmatically)
val people: RDD[Person] = ...
people.write.parquet("people.parquet")
val parquetFile = sqlContext.read.parquet("people.parquet") //data frame
写入 redshift 的 Scala 代码(取自here https://github.com/databricks/spark-redshift)
parquetFile.write
.format("com.databricks.spark.redshift")
.option("url", "jdbc:redshift://redshifthost:5439/database?user=username&password=pass")
.option("dbtable", "my_table_copy")
.option("tempdir", "s3n://path/for/temp/data")
.mode("error")
.save()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)