Предположим, у меня есть следующие таблицы в базе данных Oracle
Foo:
+--------+---------+---------+
| id_foo | string1 | string2 |
+--------+---------+---------+
| 1 | foo | bar |
| 2 | baz | bat |
+--------+---------+---------+
Bar:
+--------+-----------+--------+
| id_bar | id_foo_fk | string |
+--------+-----------+--------+
| 1 | 1 | boo |
| 2 | 1 | bum |
+--------+-----------+--------+
Когда я вставляю в Foo, используянабор данных и JDBC, такие как
Dataset<Row> fooDataset = //Dataset is initialized
fooDataset.write().mode(SaveMode.Append).jdbc(url, table, properties)
, идентификатор автоматически генерируется базой данных.Теперь, когда мне нужно сохранить Bar
, используя ту же стратегию, я хочу иметь возможность связать ее с Foo
через id_foo_fk
.
Я рассмотрел некоторые возможности, такие как monotonically_increasing_id()
как предложено в этом вопросе , но это не решит проблему, так как мне нужен идентификатор, сгенерированный базой данных.Я попробовал то, что было предложено в этом вопросе , но это приводит к той же проблеме уникальных идентификаторов, не связанных с базой данных
Также невозможно снова выбрать из JDBC, так как string1
и string2
не может быть уникальным.Также невозможно изменить базу данных.Например, я не могу изменить его на UUID и не могу добавить триггер для него.Это устаревшая база данных, которую мы можем использовать только
Как этого добиться?Возможно ли это с Apache Spark?