Apache Spark - JDBC Sources

1

Кто-нибудь сумел вытащить данные или хотя бы подключиться к РСУБД через JDBC с их новой функцией, выпущенной в 1.3, используя свой встроенный источник для Spark SQL вместо RDDJdbc?

https://databricks.com/blog/2015/03/24/spark-sql-graduates-from-alpha-in-spark-1-3.html

Я попытался применить пример, упомянутый в вышеприведенном сообщении, но это не сработало, поскольку оно дает мне ошибку. Мысль, может быть, кто-то может предоставить мне полный пример в scala о том, как подключать и запрашивать данные.

  • 0
    Не могли бы вы опубликовать полученную ошибку?
  • 0
    Я еще не пробовал, но модульный тест показывает, как это работает: github.com/apache/spark/tree/v1.3.0/sql/core/src/test/scala/org/…
Показать ещё 1 комментарий
Теги:
apache-spark
jdbc
rdd

1 ответ

0

Да. Есть два способа сделать это.

  1. Программно с использованием функции загрузки SQLContext.

Функция загрузки загружает данные источника данных JDBC в виде DataFrame. Если вы хотите сделать этот DataFrame доступным в виде таблицы в последующих запросах Spark SQL, его необходимо зарегистрировать, используя

yourDataFrame.registerTempTable( "yourTableName")

Если вам нужен полный пример, проверьте мой пост в блоге.

  1. Использование SQL

Я еще не пробовал. Основываясь на том, что я прочитал из документации, это можно сделать, как в примере ниже.

CREATE TEMPORARY TABLE yourTableName
USING org.apache.spark.sql.jdbc
OPTIONS (
  url "jdbc:postgresql:dbserver",
  dbtable "schema.tablename"
)

Как вы можете догадаться, он выполняет как загрузку данных, так и регистрацию их в виде таблицы в той же команде.

Я думал, что функция SQLContext.sql может использоваться для выполнения вышеуказанного оператора SQL DDL. Но это вызывает ту же ошибку, о которой вы говорили.

Ошибка: '' insert '' ожидается, но идентификатор CREATE найден

Исходя из всего этого, я пришел к выводу, что этот оператор DDL предназначен для выполнения от SQL-клиента, когда Spark выполняет для него базу данных. Это означает, что если вы подключаете Spark из SQL Workbench или любых других редакторов SQL, использующих SparkThrift, вы можете, вероятно, вызвать это. Если это будет успешным, вы также можете попытаться сделать это программно, используя драйвер JDBC/ODBC, который затем подключается к серверу Thrift.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню