java - 如何使用 BigQuery 连接器从 java Spark 读取 BigQuery 表

标签 java apache-spark google-bigquery google-cloud-dataproc

我正在尝试通过spark java代码读取bigquery表,如下所示:

    BigQuerySQLContext bqSqlCtx = new BigQuerySQLContext(sqlContext);
    bqSqlCtx.setGcpJsonKeyFile("sxxxl-gcp-1x4c0xxxxxxx.json");
    bqSqlCtx.setBigQueryProjectId("winged-standard-2xxxx");
    bqSqlCtx.setBigQueryDatasetLocation("asia-east1");
    bqSqlCtx.setBigQueryGcsBucket("dataproc-9cxxxxx39-exxdc-4e73-xx07- 2258xxxx4-asia-east1");
    Dataset<Row> testds = bqSqlCtx.bigQuerySelect("select * from bqtestdata.customer_visits limit 100");

但我面临以下问题:

19/01/14 10:52:01 WARN org.apache.spark.sql.SparkSession$Builder: Using an existing SparkSession; some configuration may not take effect.
19/01/14 10:52:01 INFO com.samelamin.spark.bigquery.BigQueryClient: Executing query select * from bqtestdata.customer_visits limit 100
19/01/14 10:52:02 INFO com.samelamin.spark.bigquery.BigQueryClient: Creating staging dataset winged-standard-2xxxxx:spark_bigquery_staging_asia-east1

Exception in thread "main" java.util.concurrent.ExecutionException: com.google.api.client.googleapis.json.GoogleJsonResponseException: 

400 Bad Request
{
  "code" : 400,
  "errors" : 
[ {
    "domain" : "global",
    **"message" : "Invalid dataset ID \"spark_bigquery_staging_asia-east1\". Dataset IDs must be alphanumeric (plus underscores) and must be at most 1024 characters long.",**
    "reason" : "invalid"
  } ],
  "message" : "Invalid dataset ID \"spark_bigquery_staging_asia-east1\". Dataset IDs must be alphanumeric (plus underscores) and must be at most 1024 characters long.",
  "status" : "INVALID_ARGUMENT"
}

最佳答案

响应中的消息

Dataset IDs must be alphanumeric (plus underscores)...

表示数据集 ID“spark_bigquery_staging_asia-east1”无效,因为其中包含连字符,特别是在 asia-east1 中。

关于java - 如何使用 BigQuery 连接器从 java Spark 读取 BigQuery 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54182925/

相关文章:

Java多线程解析txt文件

apache-spark - 在pyspark中,spark.read()和spark.readstream()有什么区别?

sql - 如何完全在 BigQuery 中创建具有嵌套架构的新表

SQL 嵌套数据运行总计直至达到值

java - java jar 的 list 属性

java - Jersey @InjectParam 创建一个新对象而不是从 Spring 获取

java - 给定两个图点,确定第二个点相对于第一个点的方向

apache-spark - 如何在 Spark sql 中定义窗口。具有固定尺寸;从最小值开始;不重叠

apache-spark - 如何避免每次执行查询时进行查询准备(解析、计划和优化)?

google-bigquery - 大查询中的自联接运行非常缓慢,我是否遵循最佳实践?