соединяющий pyspark, чтобы зажечь - PullRequest
0 голосов
/ 09 июля 2019

All

Я боролся с итерациями PySpark и Ignite около 2 последних недель, и я на грани сумасшествия.

Я пытался загрузить таблицу, созданную в pyspark, чтобы зажечь.

Я запускаю скрипт как

spark-submit --master spark://my_host:my_port --jars $IGNITE_HOME/libs/*jar, $IGNITE_HOME/libs/optional/ignite-spark/jar, $IGNITE_HOME/libs/ignite-spring/*jar $IGNITE_HOME/libs/ignite-indexking/*jar my_python_script.py

и my_python_script.py было похоже:

import pyspark
spark = pyspark.sql.SparkSession\
    .builder\
    .appName("Ignite")\
    .getOrCreate()

# create the data frame
columns = ["COL1", "COL2", "ID"]
vals = [("a", "b", 0), ("c", "d", 1)]
df = spark.createDataFrame(vals, columns)

df.write\
  .format("jdbc")\
  .option("driver", "org.apache.ignite.IgniteJdbcThinDriver")\
  .option("url", "jdbs:ignite:thin://my_url:my_port")\
  .option("user", "my_user")\
  .option("password", "my_password")\
  .option("dbtable", "my_table")\
  .option("mode", "overwrite")\
  .save()

И я продолжаю получать ошибки ... Для вышеупомянутого ошибка py4j.protocol.Py4JavaError: An error occurred while calling o48.save. :java.sql.SQLException: no PRIMARY KEY defined for CREATE TABLE at org.apache.ignite.internal.jdbc.thin.JdbcThinConnection.sendRequest(JdbcThinConnection.java:750

Может кто-нибудь помочь, пожалуйста?

У меня версия spark 2.4.0, python 2.7, ignite 2.7

1 Ответ

0 голосов
/ 09 июля 2019

Есть ли причина, по которой вы не используете интеграцию Spark-Ignite?JDBC должен работать, но есть лучший способ, тем более что вы уже включили все нужные JAR-файлы.

df.write.format("ignite")
        .option("table","my_table")
        .option("primaryKeyFields","COL1")
        .option("config",configFile)
        .option("mode","overwrite")
        .save()

Также обратите внимание на включение опции "primaryKeyFields".Как отмечается в сообщении об ошибке, версия, использующая JDBC, дает сбой, поскольку вы не определили первичный ключ.

...