当前位置: 首页 > 知识库问答 >
问题:

在Java中迭代BigQuery错误[]集合

管弘
2023-03-14

当我执行此Java代码时:

(注意:字符串参数是虚拟示例)

package bigquery.test;

import java.io.FileInputStream;
import java.io.InputStream;

import com.google.auth.oauth2.GoogleCredentials;
import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Job;
import com.google.cloud.bigquery.Table;
import com.google.cloud.bigquery.TableId;

public class GoogleBigQueryErrors {

    static BigQuery __bigquery__;

    public static void main(String[] args) {
        try {
            prepare();
        } catch (Exception e) {
            e.printStackTrace();
            System.exit(1);
        }

        TableId tableId = com.google.cloud.bigquery.TableId.of("DATA_SET", "TABLE");
        Table table = __bigquery__.getTable(tableId);

        Job job = table.load(com.google.cloud.bigquery.FormatOptions.json(),
                "gs://URI_PATH/HASH.bigquery.json");
        Job completedJob = null;
        try {
            completedJob = job.waitFor(); // HERE THE ERROR IS RAISED
        } catch (Exception e) {
            e.printStackTrace();
            System.exit(2);
        }
    }

    private static void prepare() throws Exception {
        String projectId = "PROJECT_ID";
        String credentialsFile = "PATH/FILE.json";
        InputStream credentialsStream = new FileInputStream(credentialsFile);
        GoogleCredentials credentials = GoogleCredentials.fromStream(credentialsStream);
        BigQueryOptions options = BigQueryOptions.newBuilder().setProjectId(projectId).setCredentials(credentials)
                .build();
        BigQuery bigquery = options.getService();
        __bigquery__ = bigquery;
        ;
    }

}

我有这个错误:com.google.cloud.bigquery.BigQueryException:读取数据时出错,错误消息:JSON表遇到太多错误,放弃。行:1;错误:1。请查看错误[]集合了解更多详细信息。

我想迭代此错误集合,但未能成功:(

有人能给我一个提示吗?

我在Python中发现了一些东西:

  • 通过Python API加载JSONL数据时检索BigQuery验证错误
  • BigQuery-在哪里可以找到错误流?

但是,我没有成功地获得Java等价物。

我查看了JavaDoc:https://javadoc.io/doc/com.google.cloud/google-cloud-bigquery/latest/index.html

  • "com.google.cloud.bigquery.作业"对象没有"get错误"方法(或等效的东西)。
  • 我看到了一个"com.google.cloud.bigquery.BigQueryErrorMessages"对象,但没有成功从上面的"工作"对象获取它。

共有1个答案

江智
2023-03-14

Javadoc中有几个waitFor()的示例用法,例如:

 Job completedJob = job.waitFor();
 if (completedJob == null) {
   // job no longer exists
 } else if (completedJob.getStatus().getError() != null) {
   // job failed, handle error
 } else {
   // job completed successfully
 }

在该示例中,它显示了对作业调用getStatus(),以获取作业状态。

一旦有了一个作业状态,就可以调用各种内容,包括getExecutionErrors()来获取错误,如下所述:

返回作业运行期间遇到的所有错误。此处的错误不一定意味着作业已完成或未成功。

像这样的东西应该接近你想要的:

List<BigQueryError> errors = job.getStatus().getExecutionErrors();
for (BigQueryError error : errors) {
    // do things with each error
}
 类似资料:
  • 是否可以在java中并行地迭代一个集合。我正在中寻找类似C#的东西-命名空间

  • 本文向大家介绍在Java中迭代ArrayList,包括了在Java中迭代ArrayList的使用技巧和注意事项,需要的朋友参考一下 Java中的Iterator用于遍历集合中的每个元素。使用它遍历,获取每个元素,或者甚至可以从ArrList中删除元素。要使用迭代器遍历集合的内容,请首先通过调用集合的iterator()方法来获得一个迭代器,使其到达集合的开头。在那之后,建立一个循环来调用hasNe

  • 我试图遍历一个数据集来进行一些字符串相似性计算,如Jaro winkler或余弦相似性。我将数据集转换为行列表,然后用for语句遍历,这不是有效的spark方法。因此,我期待在Spark中找到更好的方法。 我发现了许多我不清楚的JavaRDD示例。数据集示例将对我有很大帮助。

  • null 一些示例输出数据: *编辑:工作的scala代码行:

  • 问题内容: AFAIK有两种方法: 遍历集合的副本 使用实际集合的迭代器 例如, 和 是否有任何理由偏爱一种方法(例如,出于可读性的简单原因而偏爱第一种方法)? 问题答案: 让我举几个例子,并提出一些避免方案。 假设我们有以下藏书 收集并删除 第一种技术是收集所有要删除的对象(例如,使用增强的for循环),并在完成迭代后删除所有找到的对象。 假设你要执行的操作是“删除”。 如果要“添加”此方法也可

  • 问题内容: 在迭代集合时是否可以向集合中添加元素? 更具体地说,我想遍历一个集合,如果一个元素满足特定条件,我想向集合中添加一些其他元素,并确保也对这些添加的元素进行遍历。(我意识到这可能会导致循环终止,但是我很确定不会发生这种情况。) Sun 的Java教程建议不可能:“请注意,这是在迭代过程中修改集合的唯一安全方法;如果在迭代进行过程中对基础集合进行了其他任何修改,则行为未指定。” 因此,如果