2

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

当我创建链接服务时,我选择 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 错误 [28000] [Microsoft][BigQuery] (80) 身份验证失败:invalid_grant,Source=,', activityId: 05ff5ce1-5262-4794-853c-c9e39b7f4b71

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

谢了。皮特·博诺莫

4

3 回答 3

7

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

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

我整理了一个 PowerShell 脚本来为您执行此操作,并在 GitHub 上写了一篇文章,引导您完成将 ADF v2 验证到 Google BigQuery 的过程:

https://github.com/AnalyticJeremy/ADF_BigQuery

于 2018-05-09T18:40:06.037 回答
0

不幸的是,这是您因任何访问问题而遇到的错误。这也是您在刷新令牌过期时遇到的错误,它总是在 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

于 2022-02-09T01:00:31.483 回答
-1

根据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>"
            }
        }
    }
}

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

谢谢,伊娃

于 2018-02-27T04:10:58.580 回答