.NET для Apache Spark JDBC для подключения к Postgresql - PullRequest
0 голосов
/ 22 октября 2019

Я новичок в .NET для Apache Spark. Я пытаюсь подключить postgresql DB. Но получаю эту ошибку: сбой при выполнении метода JVM: нестатический метод jdbc для класса 6 при вызове с 3 аргументами

DOTNET_WORKER_DIR = C:\bin\Microsoft.Spark.Worker-0.5.0
HADOOP_HOME       = C:\bin\spark-2.4.1-bin-hadoop2.7\
SPARK_HOME        = C:\bin\spark-2.4.1-bin-hadoop2.7\
JAVA_HOME         = C:\Program Files\Java\jdk1.8.0_221
Dotnet framework version = 2.2
Nuget spark package =  "Microsoft.Spark/0.5.0"

%SPARK_HOME%\bin\spark-submit --class org.apache.spark.deploy.dotnet.DotnetRunner --master local 
bin\Debug\netcoreapp2.2\microsoft-spark-2.4.x-0.5.0.jar dotnet bin\Debug\netcoreapp2.2\myapp.dll
    var spark2 = SparkSession.Builder().AppName("test_postgresql").GetOrCreate();
    DataFrame frame= spark2.Read().Format("jdbc").Option("url", "jdbc:postgresql://host:5432/xxx?user=postgres&password=xxxx")
    .Option("query", "SELECT name FROM public.\"xxxx\"")
    .Load();

Когда я пытаюсь исправить проблему, я обнаружил журнал ошибок об отсутствии подходящего драйвера. Поэтому я попытался загрузить драйвер JDBC Microsoft SQL Server 2.0 и драйвер jdbc postgresql и поместить эти файлы jar в папку C: \ bin \ spark-2.4.1-bin-hadoop2.7 \ jars.

  • postgresql-42.2.8.jar
  • sqljdbc.jar
  • sqljdbc4.jar

И найдите пример подключения к postgresql

    DataFrame jdbcDf = spark.Read()
    .Format("jdbc")
    .Options(
        new Dictionary<string, string>
        {
                        {"url", "jdbc:postgresql:192.168.10.198:5432/dbname"},
                        {"dbtable", "Roles"},
                        {"user", "postgres"},
                        {"password", "XXXX"},
                        {"ssl", "false"}
        })
    .Load();

Теперь я исправляю ошибку «нет подходящего драйвера», помещая файлы JAR, но теперь я беру эту ошибку:

[Ошибка] [JvmBridge] org.postgresql.ut il.PSQLException: Соединение сlocalhost: 5432 отказано. Убедитесь, что имя хоста и порт указаны правильно и что администратор почты принимает соединения TCP / IP.

Но я не пытаюсь подключиться к localhost.

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