使用 Azure 数据工厂将数据从 Google Big Query 移动到 Azure Data Lake Store

Posted

技术标签:

【中文标题】使用 Azure 数据工厂将数据从 Google Big Query 移动到 Azure Data Lake Store【英文标题】:Moving data from Google Big Query to Azure Data Lake Store using Azure Data Factory 【发布时间】:2018-02-26 14:30:09 【问题描述】:

我有一个场景,我需要在 Google Big Query 中连接 Azure 数据工厂 (v2) 以将数据移动到我的 Azure 数据湖,但我不工作。

当我创建链接服务时,我选择 Big Query 作为源,我输入了有关 BigQuery 的所有信息,如项目名称、连接类型等,但是当我单击 Validade 按钮时,会显示一条消息:(对于例子)...

UserError: 错误 [28000] [Microsoft][BigQuery] (80) 身份验证 失败:invalid_grant 错误 [28000] [Microsoft][BigQuery] (80) 身份验证失败:invalid_grant'Type=,Message=ERROR [28000] [Microsoft][BigQuery] (80) 身份验证失败:invalid_grant ERROR [28000] [Microsoft][BigQuery] (80) 身份验证失败: invalid_grant,Source=,',activityId: 05ff5ce1-5262-4794-853c-c9e39b7f4b71

有什么想法吗?有人已经测试过这个连接器吗?

谢谢。 彼得·博诺莫

【问题讨论】:

【参考方案1】:

BigQuery 的 ADF 连接器文档解释了参数的含义,但没有提供有关如何获取这些参数值的任何指导。

我花了几天时间,终于让它工作了。我使用“用户身份验证”是因为我想使用基于云的 IR。 “Client Id”和“Client Secret”可以通过在 GCP Console 中创建新凭据来获取。但是要获得“刷新令牌”,您必须与 Google 进行 OAuth2 共舞并拦截令牌。

我为您编写了一个 PowerShell 脚本,并在 GitHub 上写了一篇文章,引导您完成将 ADF v2 验证到 Google BigQuery 的过程:

https://github.com/AnalyticJeremy/ADF_BigQuery

【讨论】:

非常有用,我在 GitHub 存储库上发布了运行 powershell 脚本的问题。谢谢,如果你能看一下。【参考方案2】:

不幸的是,这是您因任何访问问题而遇到的错误。这也是您在刷新令牌过期时遇到的错误,它总是在 60 分钟后发生。这令人难以置信的好奇......这就像很多关于 ADF 的 OAuth2.0 身份验证的指令集,从来没有提到所有这些工作都是为了获得一个在 60 分钟内过期的代码。如果没有某种方法在每次连接时都刷新它,这是毫无价值的。至少下面的链接提到了这个错误,你得到它是因为令牌已经过期......它是唯一一个麻烦提到这个超级大问题的博客文章(或 Microsoft 文档)。 https://medium.com/@varunck/data-transfer-from-google-bigquery-to-azure-blob-storage-using-azure-data-factory-adf-80659c078f83

这是我将尝试的另一种方法...它使用服务帐户和 IR https://www.youtube.com/watch?v=oRqRt7ya_DM

【讨论】:

【参考方案3】:

根据https://docs.microsoft.com/en-us/azure/data-factory/connector-google-bigquery,要通过云IR连接到Google BigQuery,您需要提供以下信息:


    "name": "GoogleBigQueryLinkedService",
    "properties": 
        "type": "GoogleBigQuery",
        "typeProperties": 
            "project" : "<project ID>",
            "additionalProjects" : "<additional project IDs>",
            "requestGoogleDriveScope" : true,
            "authenticationType" : "UserAuthentication",
            "clientId": "<id of the application used to generate the refresh token>",
            "clientSecret": 
                "type": "SecureString",
                "value":"<secret of the application used to generate the refresh token>"
            ,
            "refreshToken": 
                 "type": "SecureString",
                 "value": "<refresh token>"
            
        
    

并且您用来授予应用程序权限的用户应该有权访问您要查询的项目。

谢谢, 伊娃

【讨论】:

以上是关于使用 Azure 数据工厂将数据从 Google Big Query 移动到 Azure Data Lake Store的主要内容,如果未能解决你的问题,请参考以下文章

使用 Azure 数据工厂将数据从 Office 365 BasicDataSet_v0.Message_v0 复制到 Azure

Azure 数据工厂问题将数据从本地 sql Server 写入 Azure SQL 数据库

将 Azure 数据工厂上的数据管道从 SQL Server 复制到 Blob 存储

将数据从 Azure Blob 存储复制到 Azure SQLDB 时,Azure 数据工厂错误地复制单元格值

如何从 azure blob 存储中获取 json 数据并使用 azure 数据工厂将其发送到 power apps dataverse

使用 Azure 数据工厂将数据加载到雪花时出现问题