Я выполнил один POC о том, как взаимодействовать с RDBMS [MySQL] напрямую с помощью Apache Spark. Мне удалось взаимодействовать с базой данных MySQL из spark-shell, используя следующий код:
>>> empDF = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/SPARKPOC").option("dbtable", "SPARKPOC.EMP").option("user", "myuser").option("password", "mypassword").option("driver", "com.mysql.jdbc.Driver").load()
>>> empDF.printSchema()
root
|-- EMPNO: integer (nullable = true)
|-- ENAME: string (nullable = true)
|-- JOB: string (nullable = true)
|-- MANAGERID: integer (nullable = true)
|-- SALARY: double (nullable = true)
|-- PHONE: long (nullable = true)
|-- DEPTNO: integer (nullable = true)
>>> empDF.show()
18/08/27 22:16:47 WARN SizeEstimator: Failed to check whether UseCompressedOops is set; assuming yes
+-----+----------+---------+---------+------+-----------+------+
|EMPNO| ENAME| JOB|MANAGERID|SALARY| PHONE|DEPTNO|
+-----+----------+---------+---------+------+-----------+------+
| 7369| SMITA| CLERK| 7902| 800.0| 9567342250| 20|
| 7499| ANKUR| SALESMAN| 7698|1600.0|95673422300| 30|
| 7521| VIJAY| SALESMAN| 7698|1250.0|95673422500| 30|
| 7566| AJAY| MANAGER| 7839|2975.0| null| 20|
Аналогичным образом я также смог выполнить запрос с помощью Apache Spark и получить требуемые результаты из MySQL.
Я ищу немного ясности по поводу:
Читает ли spark данные за один раз из СУБД, сохраняет их в памяти и затем обрабатывает?
Что делать, если между серверами происходит сбой соединения, когда Apache Spark читает данные из MySQL? Если вообще возникает какое-либо сетевое соединение между ними, Spark запускает процесс сам с самого начала или я заново запускаю всю работу?
Будем благодарны за любые быстрые ссылки.
С уважением,
Bhupesh