Я пытаюсь найти способ поместить все sh из таблицы данных в SQL таблицу сервера. Я сделал небольшое гугление и придумал это.
Cluster.write \
.format("jdbc") \
.option("url", "jdbc:sqlserver://name_here.database.windows.net:1433;databaseName=db_name") \
.option("dbtable", "dbo.Cluster") \
.option("user", "u_name") \
.option("password", "p_wd") \
.save()
Мой фрейм данных называется Cluster и имеет тип pyspark. sql .dataframe.DataFrame. Если таблица существует в БД, когда я запускаю приведенный выше код, я получаю это сообщение об ошибке:
org.apache.spark.sql.AnalysisException: Table or view 'dbo.Cluster' already exists. SaveMode: ErrorIfExists.;
Если я удаляю таблицу и запускаю приведенный выше код, я получаю это сообщение об ошибке:
java.lang.IllegalArgumentException: Can't get JDBC type for struct<type:tinyint,size:int,indices:array<int>,values:array<double>>
Это должно быть выполнимо. Я делал это раньше в среде Spark; этот код работал отлично. Сейчас я работаю в среде Python (используя Databricks), и я застрял в этом на одном.
Просто чтобы пройти полный круг, я создаю фрейм данных следующим образом:
df = spark.read \
.jdbc("jdbc:sqlserver://name_here.database.windows.net:1433;databaseName=db_name", "dbo.table_name",
properties={"user": "u_name", "password": "p_wd"})
Тогда ... Я делаю аналитику и данные ... в конце концов, я применяю некоторые алгоритмы ML к данным ... и создаю два кадра данных.
df1 = df1.select("*").toPandas()
df2 = df2("*").toPandas()
Теперь Мне нужно объединить эти два кадра данных вместе.
Cluster = pd.concat([df1, df2], axis=1)
Наконец, я хочу поместить sh этот кадр данных в таблицу SQL Server. Все работает совершенно нормально, пока я в конце концов не попытаюсь поместить все данные из таблицы данных в таблицу. Это единственная проблема, которую я имею здесь.