Это тот тип поста, где QUESTION будет стоить больше, чем ОТВЕТ, потому что приведенный выше код работает, но его нет нигде в документации или примерах Spark 2.x.
Выше показано, как я программно добавил функциональность в Spark 2.x посредством координат Maven. У меня было это работает, но потом оно перестало работать. Почему?
Когда я запустил вышеупомянутый код в jupyter notebook
, ноутбук - за кулисами - уже выполнил этот идентичный фрагмент кода посредством моего сценария PYTHONSTARTUP
. Этот сценарий PYTHONSTARTUP
имеет тот же код, что и выше, , но опускает maven координаты (намеренно).
Итак, вот как возникает эта тонкая проблема:
spark_sesn = SparkSession.builder.config(conf = spark_conf).getOrCreate()
Поскольку Spark Session уже существовал, вышеприведенный оператор просто повторно использовал этот существующий сеанс (.getOrCreate ()) , в котором не было загруженных jar / библиотек (опять же, потому что мой скрипт PYTHONSTARTUP преднамеренно пропускает их). Вот почему это хорошая идея - помещать операторы печати в сценарии PYTHONSTARTUP (которые в остальном молчат).
В конце концов, я просто забыл сделать это: $ unset PYTHONSTARTUP
перед запуском демона JupyterLab / Notebook
.
Я надеюсь, что Вопрос поможет другим, потому что именно так программно добавляются функциональные возможности в Spark 2.x (в данном случае Kafka). Обратите внимание, что вам понадобится подключение к Интернету для единовременной загрузки указанных jar-файлов и рекурсивных зависимостей из Maven Central.
SELECT table_name
FROM information_schema.tables
WHERE table_type = 'BASE TABLE'
AND table_schema NOT IN
('pg_catalog', 'information_schema');
SELECT column_name
FROM information_schema.columns
WHERE table_name = 'YourTablesName';
Эта страница имеет некоторую большую информацию о получении информации от information_schema: http://www.alberton.info/postgresql_meta_info.html
используйте ANSI information_schema представления
select * from information_schema.tables
select * from information_schema.columns
Если у Вас есть доступ к psql, можно использовать \d
и \d table
. С точки зрения SQL, сначала эквивалентно
SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'
115-секундный
SELECT column_name FROM information_schema.columns WHERE table_name ='table'
не пишут это самостоятельно . Используйте phpPgAdmin - это будет намного легче, быстрее и менее подверженным ошибкам.