Tôi đang cố gắng kết nối GCP bigQuery từ local bằng simba jdbc nhưng gặp lỗi. Trước đây tôi gặp sự cố về quyền vai trò tài khoản dịch vụ, sự cố đã được giải quyết bằng cách thêm các vai trò cần thiết cho tài khoản dịch vụ
Tôi đang cố gắng kết nối với GCP BigQuery từ cục bộ bằng Simba JDBC nhưng tôi gặp lỗi. Trước đây tôi gặp vấn đề với quyền của vai trò tài khoản dịch vụ. Vấn đề này đã được giải quyết bằng cách thêm các vai trò cần thiết vào tài khoản dịch vụ
java.sql.SQLException: [Simba][BigQueryJDBCDriver](100004) Lỗi HttpTransport IO: Lỗi khi nhận mã thông báo truy cập cho tài khoản dịch vụ: kết nối đã hết thời gian chờ, iss: [email protected].
tại com.simba.googlebigquery.googlebigquery.client.BQClient.createAndTestClient(Nguồn không xác định)
tại com.simba.googlebigquery.googlebigquery.client.BQClient.authenticateAndTest(Nguồn không xác định)
tại com.simba.googlebigquery.googlebigquery.core.BQConnection.connect(Nguồn không xác định)
tại com.simba.googlebigquery.jdbc.common.BaseConnectionFactory.doConnect(Nguồn không xác định)
tại com.simba.googlebigquery.jdbc.common.AbstractDataSource.getSimbaConnection(Nguồn không xác định)
tại com.simba.googlebigquery.jdbc.common.AbstractDataSource.getConnection(Nguồn không xác định)
Nguyên nhân do: com.simba.googlebigquery.support.exceptions.GeneralException: [Simba][BigQueryJDBCDriver](100004) Lỗi HttpTransport IO: Lỗi khi nhận mã thông báo truy cập cho tài khoản dịch vụ: kết nối đã hết thời gian chờ, iss: [email protected].
... 6 cái nữa
Nguyên nhân do: com.simba.googlebigquery.googlebigquery.client.exceptions.JobExecutionErrorException: EXEC_JOB_EXECUTION_ERR
tại com.simba.googlebigquery.googlebigquery.client.requests.jobs.JobsInsertRequest.throwException(Nguồn không xác định)
tại com.simba.googlebigquery.googlebigquery.client.requests.AbstractRequestWithRetry.executeWithRetry(Nguồn không xác định)
tại com.simba.googlebigquery.googlebigquery.client.queryclient.QueryClient.executeDryRun(Nguồn không xác định)
tại com.simba.googlebigquery.googlebigquery.client.BQClient.prepare(Nguồn không xác định)
tại com.simba.googlebigquery.googlebigquery.client.BQClient.createAndTestClient(Unk
nhập com.simba.googlebigquery.jdbc42.DataSource;
nhập java.sql.Connection;
nhập java.sql.SQLException;
lớp công khai TEstConnection {
public static void main(String[] args) {
System.out.println("Kiểm tra kết nối");
Kết nối kết nối = null;
Nguồn dữ liệu ds = mới
com.simba.googlebigquery.jdbc42.DataSource();
ds.setProjectId("xxx");
ds.setOAuthPvtKeyFilePath("C:\\Users\\xx\\UI\\GCP\\devgcp.json");
ds.setOAuthType(0);
ds.setOAuthServiceAcctEmail("[email protected]");
ds.setURL("jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443");
ds.setTimeout(40000000L);
thử {
kết nối = ds.getConnection();
} bắt (SQLException e) {
e.printStackTrace();
}
}
}
Tài khoản dịch vụ đã yêu cầu quyền vai trò nhưng tôi vẫn gặp lỗi
Tài khoản dịch vụ yêu cầu quyền vai trò nhưng tôi vẫn gặp lỗi
Thêm câu trả lời
Khuyến nghị câu trả lời tuyệt vời
Có hai cách xác thực tài khoản dịch vụ của bạn. Bạn có thể đã thực hiện một trong hai cách sau: OAuth 2.0
Và Tài khoản dịch vụ dựa trên
xác thực
Và bạn có thể muốn thực hiện xác thực lại.
Có hai cách để xác minh tài khoản dịch vụ của bạn. Bạn có thể đã thực hiện một trong hai loại xác thực sau: OAuth 2.0 và xác thực dựa trên tài khoản dịch vụ và bạn có thể muốn thực hiện lại xác thực.
Đây là URL để sử dụng để kết nối với Google BigQuery bằng cách sử dụng Tiến trình DataDirect BigQuery JDBC Connector sử dụng xác thực dựa trên Tài khoản dịch vụ.
Dưới đây là URL để kết nối với Google BigQuery bằng cách sử dụng xác thực dựa trên tài khoản dịch vụ bằng trình kết nối JDBC Progress DataDirect BigQuery.
jdbc:datadirect:googlebigquery:AuthenticationMethod=serviceaccount;Project=your-project-id;Dataset=your-dataset;[email protected];ServiceAccountPrivateKey=/đường dẫn/đến/tệp-khóa-json
Để xác thực tài khoản dịch vụ thông qua OAuth 2.0, cần có mã thông báo truy cập và làm mới. Để có được mã thông báo, ID khách hàng OAuth phải được tạo ra để có được ID khách hàng Và Bí mật của khách hàng cần thiết để có được mã ủy quyền. Đây là bản đầy đủ và chi tiết hướng dẫn về cách xác thực thông qua OAuth 2.0.
Để xác thực tài khoản dịch vụ qua OAuth 2.0, cần có mã thông báo truy cập và làm mới. Để nhận được mã thông báo, bạn phải tạo ID ứng dụng khách OAuth để lấy ID ứng dụng khách và bí mật ứng dụng khách cần thiết để lấy mã ủy quyền. Dưới đây là hướng dẫn đầy đủ và chi tiết về cách xác thực bằng OAuth 2.0.
Thêm câu trả lời
Tôi là một lập trình viên xuất sắc, rất giỏi!