объединение данных из разных источников в apache искра - PullRequest
0 голосов
/ 17 января 2020

Я изучаю apache spark для проекта, в котором я хочу получать данные из разных источников - таблиц базы данных (postgres и BigQuery) и текста. Данные будут обработаны и переданы в другую таблицу для аналитики. Я выбираю язык программирования Java, но я также изучаю Python. Может кто-нибудь сообщить мне, могу ли я прочитать непосредственно в искру для обработки? Нужен ли какой-то соединитель между таблицами базы данных и кластером Spark.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 17 января 2020

Если, например, вы хотите прочитать содержимое из таблицы BigQuery, вы можете сделать это с помощью следующих инструкций (например, Python):

words = spark.read.format('bigquery') \
   .option('table', 'bigquery-public-data:samples.shakespeare') \
   .load()

вы можете обратиться к этому документу [1] (здесь вы также можете увидеть инструкции с Scala).

*** Я рекомендую сначала попробовать код wordcount, чтобы использовать шаблон использования ****

После что, и у вас есть готовый код Spark, вы должны создать новый кластер в Google Dataproc [2] и запустить там задание, связав соединитель BigQuery (пример с python):

gcloud dataproc jobs submit pyspark wordcount.py \
   --cluster cluster-name \
   --region cluster-region (example: "us-central1") \
   --jars=gs://spark-lib/bigquery/spark-bigquery-latest.jar

Здесь вы можете найти последнюю версию коннектора BigQuery [3].

Кроме того, в этом репозитории GitHub вы можете найти некоторые примеры использования коннектора BigQuery со Spark [4].

С помощью этих инструкций вы сможете справиться с чтением и записью BigQuery.

[1] https://cloud.google.com/dataproc/docs/tutorials/bigquery-connector-spark-example#running_the_code

[2] https://cloud.google.com/dataproc/docs/guides/create-cluster

[3] гс: // искра -lib / bigquery / spark-bigquery-latest.jar

[4] https://github.com/GoogleCloudDataproc/spark-bigquery-connector

0 голосов
/ 17 января 2020

Вы можете подключиться к rdbms, используя jdb c. У Spark также есть разъем для BigQuery. Считать из всех источников данные во фреймы данных отдельно и объединить в конце (при условии, что все имеют одинаковый формат данных)

пример псевдокода для pyspark:

df1 = spark.read. json ("s3: //test.json") df2 = sqlContext.read.format ("jdb c"). option ("url", "jdb c: mysql: // xxxx") .option ("драйвер", "com. mysql .jdb c .Driver"). option ("table", "name"). option ("user", "user"). option ("password" , "пароль"). load ()

result = df1.union (df2)

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