Примеры Dataproc + BigQuery - есть ли в наличии?

google-bigquery google-cloud-platform google-cloud-dataproc

2389 просмотра

3 ответа

Согласно документации Dataproc , он имеет " встроенную и автоматическую интеграцию с BigQuery ".

У меня есть таблица в BigQuery. Я хочу прочитать эту таблицу и выполнить ее анализ с помощью созданного мной кластера Dataproc (используя задание PySpark). Затем запишите результаты этого анализа обратно в BigQuery. Вы можете спросить: «Почему бы просто не провести анализ непосредственно в BigQuery !?» - причина в том, что мы создаем сложные статистические модели, а уровень SQL слишком высок для их разработки. Нам нужно что-то вроде Python или R, например Dataproc.

Есть ли у них примеры Dataproc + BigQuery? Я не могу найти ни одного.

Автор: Graham Polley Источник Размещён: 13.07.2019 05:48

Ответы (3)


8 плюса

Решение

Для начала, как отмечено в этом вопросе, коннектор BigQuery предустановлен на кластерах Cloud Dataproc .

Вот пример того, как читать данные из BigQuery в Spark. В этом примере мы будем читать данные из BigQuery для подсчета слов. Вы читаете данные из BigQuery в Spark, используя SparkContext.newAPIHadoopRDD. Документация Spark содержит больше информации об использовании SparkContext.newAPIHadoopRDD. '

import com.google.cloud.hadoop.io.bigquery.BigQueryConfiguration
import com.google.cloud.hadoop.io.bigquery.GsonBigQueryInputFormat
import com.google.cloud.hadoop.io.bigquery.mapred.BigQueryMapredInputFormat
import com.google.gson.JsonObject

import org.apache.hadoop.io.LongWritable

val projectId = "<your-project-id>"
val fullyQualifiedInputTableId = "publicdata:samples.shakespeare"
val fullyQualifiedOutputTableId = "<your-fully-qualified-table-id>"
val outputTableSchema =
    "[{'name': 'Word','type': 'STRING'},{'name': 'Count','type': 'INTEGER'}]"
val jobName = "wordcount"

val conf = sc.hadoopConfiguration

// Set the job-level projectId.
conf.set(BigQueryConfiguration.PROJECT_ID_KEY, projectId)

// Use the systemBucket for temporary BigQuery export data used by the InputFormat.
val systemBucket = conf.get("fs.gs.system.bucket")
conf.set(BigQueryConfiguration.GCS_BUCKET_KEY, systemBucket)

// Configure input and output for BigQuery access.
BigQueryConfiguration.configureBigQueryInput(conf, fullyQualifiedInputTableId)
BigQueryConfiguration.configureBigQueryOutput(conf,
    fullyQualifiedOutputTableId, outputTableSchema)

val fieldName = "word"

val tableData = sc.newAPIHadoopRDD(conf,
    classOf[GsonBigQueryInputFormat], classOf[LongWritable], classOf[JsonObject])
tableData.cache()
tableData.count()
tableData.map(entry => (entry._1.toString(),entry._2.toString())).take(10)

Вам нужно будет настроить этот пример в соответствии с вашими настройками, включая идентификатор проекта Cloud Platform и идентификатор <your-project-id>выходной таблицы <your-fully-qualified-table-id>.

Наконец, если в конечном итоге вы используете соединитель BigQuery с MapReduce, на этой странице приведены примеры написания заданий MapReduce с соединителем BigQuery.

Автор: James Размещён: 09.10.2015 06:59

1 плюс

Вы также можете использовать коннекторы spark-bigquery https://github.com/samelamin/spark-bigquery для непосредственного выполнения запросов в dataproc с помощью spark.

Автор: Sarang Shinde Размещён: 18.10.2018 02:43

0 плюса


Приведенный выше пример не показывает, как записать данные в выходную таблицу. Вам нужно сделать это:

.saveAsNewAPIHadoopFile(
hadoopConf.get(BigQueryConfiguration.TEMP_GCS_PATH_KEY), 
classOf[String], 
classOf[JsonObject], 
classOf[BigQueryOutputFormat[String, JsonObject]], hadoopConf)

где ключ: строка фактически игнорируется

Автор: lukeforehand Размещён: 02.11.2015 05:51
Вопросы из категории :
32x32