Как использовать официальный коннектор Google Spark BigQuery для многораздельных таблиц? - PullRequest
0 голосов
/ 10 сентября 2018

Я использую официальный соединитель Google Spark-BigQuery (com.google.cloud.bigdataoss:bigquery-connector:hadoop2-0.13.6) для извлечения данных из BigQuery в огромную таблицу с временным разделением (поле myDateField).

Итак, в настоящее время я делаю это (пример, адаптированный из документов) для получения последних данных (менее чем за месяц):

val config = sparkSession.sparkContext.hadoopConfiguration
config.set(BigQueryConfiguration.GCS_BUCKET_KEY, "mybucket")
val fullyQualifiedInputTableId = "project:dataset.table"
BigQueryConfiguration.configureBigQueryInput(config, fullyQualifiedInputTableId)

val bigQueryRDD: RDD[(LongWritable, JsonObject)] = sparkSession.sparkContext.newAPIHadoopRDD(
    config,
    classOf[GsonBigQueryInputFormat],
    classOf[LongWritable],
    classOf[JsonObject]
)

val convertedRDD: RDD[MyClass] = bigQueryRDD.map { case (_, jsonObject) =>
    convertJsonObjectToMyClass(jsonObject)
}

val recentData: RDD[MyClass] = convertedRDD.filter { case MyClass(_, myDateField) =>
    myDateField >= "2018-08-10"
}

println(recentData.count())

Вопросы

  • Мне интересно, запрашивает ли соединитель все данные из таблицы BigQuery, например:

    SELECT *
    FROM `project.dataset.table`
    

    Или если он делает что-то умное (и более важное, менее дорогое), использующееразделение, например:

    SELECT *
    FROM `project.dataset.table`
    WHERE myDateField >= TIMESTAMP("2018-08-10")
    
  • Кроме того, в общем, как я могу контролировать затраты на запрос и быть уверенным, что несущественные данные (здесь, например, данные до "2018-08-10")ничего не найдено?

  • в случае, если BigQuery извлекает все данные, могу ли я предоставить конкретный запрос?BigQueryConfiguration.INPUT_QUERY_KEY (mapred.bq.input.query) устарела, но я не вижу никакой замены, и документы не очень ясны по этому вопросу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...