【发布时间】:2016-10-21 09:51:30
【问题描述】:
我想将所有表从 Azure SQL 数据库完全迁移到 Azure Data Lake。我怎样才能做到这一点。 请给出一些场景,以便我可以完全迁移到 azure 数据湖。 提前致谢。
我也可以通过 SSIS 做到这一点吗?
【问题讨论】:
标签: azure ssis azure-data-lake
我想将所有表从 Azure SQL 数据库完全迁移到 Azure Data Lake。我怎样才能做到这一点。 请给出一些场景,以便我可以完全迁移到 azure 数据湖。 提前致谢。
我也可以通过 SSIS 做到这一点吗?
【问题讨论】:
标签: azure ssis azure-data-lake
如果您不想安排它,并且有兴趣移动 Azure Data Lake Store 中的所有表,那么您可以直接从 U-SQL 查询您的表并通过 ADL 存储中的 U-SQL 输出器将其输出。
【讨论】:
看看 Azure 数据工厂。这就像 Azure 中的 SSIS。见https://azure.microsoft.com/en-us/documentation/articles/data-factory-introduction/
有关将数据移动到 Azure Data Lake 的教程,请参阅 https://azure.microsoft.com/en-us/documentation/articles/data-factory-azure-datalake-connector/。
【讨论】:
除了使用 Azure 数据工厂和 U-SQL,您还可以使用在 HDI 集群上运行的 sqoop - https://azure.microsoft.com/en-gb/documentation/articles/data-lake-store-data-transfer-sql-sqoop/。
您现在不能使用 SSIS。我们正在努力实现这种支持。启用后,我们将更新此线程并发布相应的文档。
谢谢, 萨钦谢斯 Azure 数据湖项目经理
【讨论】:
您有多种选择,如此处的答案数量所示,但这在某种程度上取决于您希望数据最终采用哪种格式以及您想要执行哪种工作负载。您当前的数据在数据库中,这意味着它是高度结构化的,具有强大的数据类型,以及索引和关系。如果您改用另一种格式,您会失去其中的一些或大部分,所以决定您最终要采用哪种格式?例如数据库表、平面文件、外部表、U-SQL 表。 U-SQL(恕我直言)最适合分析工作负载,您希望将关系数据与非关系数据混合或仅处理非关系数据,即基本上可以使用 c# 表达式完成普通 T-SQL 无法完成的事情或大规模定制输出器、处理器等。
让我们通过以下方式来研究其中的一些方法:
优点:数据不会从原始数据库中移动,并且可以使用 U-SQL 与湖中的其他数据连接。
缺点:必须编写额外的代码
DROP VIEW IF EXISTS dbo.viewOnAzureDB;
CREATE VIEW dbo.viewOnAzureDB
AS
SELECT col1,
col2,
col3,
col4
FROM EXTERNAL yourExternalDataSource LOCATION "dbo.yourTable";
优点:直接使用复制向导将数据从 Azure DB 复制到湖中的平面文件。 缺点:您失去了从数据库表中获得的强大的数据类型、索引和关系。
优点: U-SQL 表可以被索引和分区,并且具有强大的数据类型。
缺点:必须编写额外的代码,没有关系
// U-SQL CTAS
CREATE TABLE dbo.CTASOnAzureDBTable
(
INDEX cdx_CTASOnAzureDBTable
CLUSTERED(col1)
DISTRIBUTED BY
ROUND ROBIN
)
AS
SELECT *
FROM dbo.viewOnAzureDB;
// U-SQL table
CREATE TABLE IF NOT EXISTS dbo.CTASOnAzureDBTable2
(
col1 int,
col2 DateTime?, // ? means nullable,
col3 string,
col4 bool,
INDEX cdx_CTASOnAzureDBTable2
CLUSTERED(col1)
DISTRIBUTED BY
ROUND ROBIN
);
我希望这可以帮助您思考一些选项,并思考您迁移到数据湖的确切原因以及您想要从中获得什么。
【讨论】: